【发布时间】:2020-03-23 11:57:22
【问题描述】:
更新:我已经更新了这个例子,因为它不够清楚。
我正在尝试根据条件在数据框的 R 列中进行聚合。 我的数据框如下所示:
df <- data.frame(year = rep(2005, 8),
id = 1:8,
crash_x = c(0, 2, 0, 0, 4, 0,1,2),
crash_y = c(1, 0, 0, 0, 0, 1,0,0),
crash_z = c(0, 0, 3, 1, 0, 0,0,0),
injured_x = c(0, 1, 0, 0, 3, 0,0,0),
injured_y = c(0, 0, 2, 1, 0, 0,1,2),
injured_z = c(3, 0, 0, 0, 0, 2, 0,0))
year id crash_x crash_y crash_z injured_x injured_y injured_z
2005 1 0 1 0 0 0 3
2005 2 2 0 0 1 0 0
2005 3 0 0 3 0 2 0
2005 4 0 0 1 0 1 0
2005 5 4 0 0 3 0 0
2005 6 0 1 0 0 0 2
2005 7 1 0 0 0 1 0
2005 8 2 0 0 0 2 0
我想对列求和,条件是共享相同后缀(x、y 或 z)的列 crash_ 和 injured_ 的数字大于0 在同一行,例如第 1 行和第 6 行、第 3 和第 4 行、第 2 和第 5 行、第 7 和第 8 行等。
输出应如下所示:
year crash_x crash_y crash_z injured_x injured_y injured_z
2005 0 2 0 0 0 5
2005 6 0 0 4 0 0
2005 0 0 4 0 3 0
2005 3 0 0 0 3 0
这可能吗?谢谢!!
【问题讨论】:
-
抱歉,我很困惑:“如果 columns crash_ 和受伤_ 具有相同的 non_null columns”?
-
您希望如何聚合列——通过计算
sum? -
谢谢,我没有意识到我写了两次“列”,我已经更新了问题!
标签: r if-statement aggregate