【发布时间】:2021-05-08 03:13:40
【问题描述】:
我有一个 df (due_date),其中 1000 行按升序排列,每行是事件发生后的一天(如“1 天、2 天等”,时间格式为“天”),所以 c1 是每一天,c2 是每一天的人数。这是我的 df 的一个小例子:
diff_in_days number_of_people
1 days 100
2 days 50
3 days 200
4 days 20
5 days 25
6 days 500
我正在尝试找出一个代码,我可以用它来组合一定天数,然后从该分组中获取总人数。例如,我想将“1 天到 3 天”分组,得到总数 350,然后将天数 >= 4 分组,得到 545。新的数据框看起来像这样:
diff_in_days number_of_people
1:3 days 350
>=4 days 545
到目前为止,我已经尝试过 group_by 的不同组合,例如:
due_date %>%
group_by(diff_in_days == 0:3, >=4)
due_date %>%
group_by(diff_in_days == "0 days:3 days", ">=4 days")
due_date %>%
group_by(diff_in_days(==0:3,>=4)
如果我尝试对多天进行分组,R 在第一个“组”之后会给我“意外符号”:
Error: unexpected '==' in:
"due_date %>%
group_by(diff_in_days(=="
我试过带/不带引号等。如果我只放:
due_date %>%
group_by(diff_in_days == "0 days:3 days")
我得到第三列,其名为:diff_in_days == "0 days:3 days"
并且列中的每一行都用“FALSE”填充。用于查找日期差异的单位是“天”,但如果我去掉 units = c("days"),它会将单位变成我不想要的秒。我有多个 df 的类似数据,但有时可能会丢失,因此数据可能如下所示,因此我无法在每个数据中应用相同的特定行号。具体分组必须基于我为 diff_in_day 选择的天数范围。
diff_in_days number_of_people
3 days 200
4 days 20
6 days 500
如果我需要澄清任何事情,请告诉我,但由于敏感,我无法发布完整代码。提前致谢!
【问题讨论】:
-
你需要一个简单的 ifelse。创建一个新变量或替换现有变量
-
due_date %>% group_by(diff_in_days = ifelse(diff_in_days > 3, '>=4', '1:3 days')) %>% summarise(number_of_people = sum(number_of_people))
标签: r