【发布时间】:2018-04-20 19:53:44
【问题描述】:
如何将以下代码合二为一:
df %>% group_by(year) %>% filter(MIAPRFCD_J8==1 | MIAPRFCD_55==1) %>% summarise (Freq = n())
df %>% group_by(year) %>% filter(sum==1 | (MIAPRFCD_J8==1 & MIAPRFCD_55==1)) %>% summarise (reason_lv = n())
所以输出将是一个表格(或 df),它根据上述过滤器按年份和两列频率分组。 这是示例数据:
df<- read.table(header=T, text='Act year MIAPRFCD_J8 MIAPRFCD_55 sum
1 2015 1 0 1
2 2016 1 0 1
3 2016 0 1 2
6 2016 1 1 3
7 2016 0 0 2
9 2015 1 0 1
11 2015 1 0 1
12 2015 0 1 2
15 2014 0 1 1
20 2014 1 0 1
60 2013 1 0 1')
梳理代码后的输出为:
year Freq reason_lv
2013 1 1
2014 2 2
2015 4 3
2016 3 2
【问题讨论】:
-
“我没有添加我的数据,因为我相信从代码中可以清楚地看到我想要实现的目标。”真的不是。如果您包含您的数据,我们就会知道您拥有哪些类型的变量、您如何加入它们等等。
-
有
group_by(mtcars, am) %>% summarise(n1 = sum(mpg > 20), n2 = sum(disp < 100)),但似乎应该可以使用计数或类似功能... -
实际上并不清楚。请始终假设您所做的事情对您的听众来说并不清晰。
-
同意卡米尔。一般在问
dplyr问题时没有理由不包含数据;如果您不想包含自己的数据,请使用您安装的软件包提供的众多数据集之一(使用data(package = .packages(all.available = TRUE))查看所述数据集)。 -
@camille 等人。感谢您的反馈意见。我现在为上述问题添加了一个示例 df。
标签: r dplyr data.table