如何解决如何使用 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 举报,一经查实,本站将立刻删除。