R 将数据帧折叠为唯一的行
我试图做的是折叠我的数据框,这样每个唯一的日期都有相应的变量。以下是我目前的数据示例(仅供参考:我使用的完整数据集大约为300 obs,日期不同):R 将数据帧折叠为唯一的行,r,R,我试图做的是折叠我的数据框,这样每个唯一的日期都有相应的变量。以下是我目前的数据示例(仅供参考:我使用的完整数据集大约为300 obs,日期不同): date来自dplyr包的一种方法: library(dplyr) reduced_df <- df %>% group_by(date, eventcode) %>% summarise_all(funs(as.integer(sum(.)))) %>% ungroup() 库(dplyr) 减少的_df%
date来自dplyr包的一种方法:
library(dplyr)
reduced_df <- df %>%
group_by(date, eventcode) %>%
summarise_all(funs(as.integer(sum(.)))) %>%
ungroup()
库(dplyr)
减少的_df%
分组依据(日期、事件代码)%>%
汇总所有(funs(作为整数(总和))%>%
解组()
输出:
# A tibble: 1 x 6
# date eventcode eoi145 eoi140 eoi141 eoi143
# <fct> <fct> <int> <int> <int> <int>
# 10/30/17 14 1 1 1 1
#一个tible:1 x 6
#日期事件代码eoi145 eoi140 eoi141 eoi143
#
# 10/30/17 14 1 1 1 1
数据表的另一种方式
dcast(melt(DT,measure.vars = patterns("^eoi"))[value != 0],date + eventcode ~variable)
date eventcode eoi145 eoi140 eoi141 eoi143
1: 10/30/17 14 1 1 1 1
你融化并获得价值!=0
melt(DT,measure.vars = patterns("^eoi"))[value == 1]
date eventcode variable value
1: 10/30/17 14 eoi145 1
2: 10/30/17 14 eoi140 1
3: 10/30/17 14 eoi141 1
4: 10/30/17 14 eoi143 1
然后用dcast再次返回到broad。
优点是它几乎适用于任何情况。如果你有
eoi143 <- c(0, 0, 1, 1)
date eventcode eoi145 eoi140 eoi141 eoi143
1: 10/30/17 14 1 1 1 2
eoi143谢谢!成功了。非常感谢你的帮助。
melt(DT,measure.vars = patterns("^eoi"))[value == 1]
date eventcode variable value
1: 10/30/17 14 eoi145 1
2: 10/30/17 14 eoi140 1
3: 10/30/17 14 eoi141 1
4: 10/30/17 14 eoi143 1
eoi143 <- c(0, 0, 1, 1)
date eventcode eoi145 eoi140 eoi141 eoi143
1: 10/30/17 14 1 1 1 2