Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将数据帧折叠为唯一的行_R - Fatal编程技术网

R 将数据帧折叠为唯一的行

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%

我试图做的是折叠我的数据框,这样每个唯一的日期都有相应的变量。以下是我目前的数据示例(仅供参考:我使用的完整数据集大约为300 obs,日期不同):


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