【发布时间】:2020-06-16 14:50:17
【问题描述】:
我有一个 1129 行和 4662 列的大型数据框。我想以每 3 列的间隔对数据框中的行值求和,然后如果每 3 列的行总和 >0,则为这些总和中的每一个返回 1,如果总和
df <- read.table(text =" 2005-09-23_2005-09-26 2005-09-27_2005-10-30 2005-10-07_2005-10-08 2005-10-09_2005-10-10 2005-10-11_2005-10-12 2005-10-13_2005-10-14
1 1 0 1 1 1 1
2 1 1 0 0 0 0
3 NA NA NA NA NA 0", header = TRUE)
我想要的结果是这样的:
result <- read.table(text =" 2005-09-23_2005-10-08 2005-10-09_2005-10-14
1 1 1
2 1 0
3 NA 0", header = TRUE)
我寻找了类似的问题,似乎 rollapply (R: summing over an interval of rows) OR rowsum 可以工作 (R: summing over an interval of rows),但我找不到使用列作为间隔而不是行来对行求和的方法,也不知道如何以重复的顺序进行。有人会这么好心帮我写一些代码吗?非常感谢!
【问题讨论】:
-
我需要更清楚一点 - (a) “以每 7 列为间隔对行值求和” 你的意思是对第 1 到第 7 列、第 8 到第 14 列求和吗, ETC?或者你的意思是总和列 1 + 8 + 15 + ...,列 2 + 9 + 16 + ...? (b) "如果每 3 列的行总和 >0,则为每个总和返回 1,如果总和 "
3来自哪里?这是一个错字,应该是7?如果总和是0.5,它既>0又 -
嗨 Gregor,很抱歉不清楚,我已经编辑了我的问题。所以我想对第 1 到第 3 列的行值求和,然后对第 4 到第 6 列的行值求和,然后从第 7 列到第 9 列的行值求和,等等。我几乎需要每 3 列聚集或聚合我的数据,在我的真实数据中代表天……也就是说,如上所述,以三天为间隔汇总数据。我希望这有助于澄清。