微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 R 重塑此数据框?

如何解决如何使用 R 重塑此数据框?

我是 R 的新手,需要一些帮助来重塑类似于下面的数据框:

company_name profit_usd profit_eur profit_gbp
A 2017 1237 1006 871
B 2017 1337 1096 949
A 2018 1143 937 811
B 2018 1288 1056 914

我想重新整理这个表格,以便我只有一列显示利润,另一列显示货币名称。像这样:

company_name 货币 利润
A 2017 usd 1237
A 2017 eur 1006
A 2017 gbp 871
B 2017 usd 1337
B 2017 eur 1096
B 2017 gbp 949
A 2018 usd 1143
A 2018 eur 937
A 2018 gbp 811
B 2018 usd 1288
B 2018 eur 1056
B 2018 gbp 914

如有任何帮助,将不胜感激,谢谢!

解决方法

假设您的数据存储在对象 df 中:

library(tidyverse)

df %>%
  pivot_longer(cols      = starts_with("profit"),names_sep = "_",names_to  = c("delete","currency"),values_to = "profit") %>%
  select(-delete)
,

除了deschen的回答。

library(tidyr)

#long format
df <- pivot_longer(df,cols = c("profit_usd","profit_eur","profit_gbp"),names_to = "currency",values_to = "profit")

#removes profit_ from your currency column
df$currency <- gsub("profit_","",df$currency)

我个人倾向于不使用管道函数。尤其是在刚开始时,管道函数的使用会创建长代码行,与多行代码相比,这些代码行更难调试。管道函数的优点当然是代码更短。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。