R中的折叠表
我试图用R总结一个表格,但不确定最好的方法 我尝试了dplyr摘要,但它似乎不是非常有效,也不清楚我需要做什么 起始数据R中的折叠表,r,R,我试图用R总结一个表格,但不确定最好的方法 我尝试了dplyr摘要,但它似乎不是非常有效,也不清楚我需要做什么 起始数据 table <- data.frame(Company1 = c("A","A","C","C"), Company2 = c("B", "B", "D", "D"), target = c("sales", "turnover", "sales", "turnover"), result = c(200, 5000, 300, 7500)) Comp
table <- data.frame(Company1 = c("A","A","C","C"), Company2 = c("B", "B",
"D", "D"), target = c("sales", "turnover", "sales", "turnover"), result =
c(200, 5000, 300, 7500))
Company1 Company2 target result
1 A B sales 200
2 A B turnover 5000
3 C D sales 300
4 C D turnover 7500
我们可以使用
tidyr
的unite
组合结果
和目标
列,然后spread
以宽格式获取数据
library(tidyr)
table %>%
unite(result, target, result, sep = "-", remove = FALSE) %>%
spread(target, result)
# Company1 Company2 sales turnover
#1 A B sales-200 turnover-5000
#2 C D sales-300 turnover-7500
我们可以使用
data.table中的dcast
library(data.table)
dcast(setDT(table)[, new := paste(target, result, sep = ' - ')],
Company1 + Company2 ~ target, value.var = 'new')
# Company1 Company2 sales turnover
#1: A B sales - 200 turnover - 5000
#2: C D sales - 300 turnover - 7500
太棒了,谢谢。除了fill函数外,对tidyr不太熟悉。没有意识到它能提供多少。再次感谢!
library(data.table)
dcast(setDT(table)[, new := paste(target, result, sep = ' - ')],
Company1 + Company2 ~ target, value.var = 'new')
# Company1 Company2 sales turnover
#1: A B sales - 200 turnover - 5000
#2: C D sales - 300 turnover - 7500