通过对data.frame中的另一列求和来创建月份列
在R中,我试图创建一个月列,通过对另一列求和来绘制我的数据,该列对于我正在处理的每个群体具有相同的值,例如:通过对data.frame中的另一列求和来创建月份列,r,sapply,R,Sapply,在R中,我试图创建一个月列,通过对另一列求和来绘制我的数据,该列对于我正在处理的每个群体具有相同的值,例如: NAME ORIG_ROW MONTH POP1 1 1 POP1 1 2 POP1 1 3 POP2 2 1 POP2 2 2 POP2 2 3 我可以通过以下方式做到这一点: df$MONTH <- sapply(1:nrow(df), function(i) (colSums(df[0:i,
NAME ORIG_ROW MONTH
POP1 1 1
POP1 1 2
POP1 1 3
POP2 2 1
POP2 2 2
POP2 2 3
我可以通过以下方式做到这一点:
df$MONTH <- sapply(1:nrow(df), function(i) (colSums(df[0:i, c('ORIG_ROW') == df$ORIG_ROW[i]))
df$MONTH只需简单调用ave
,就可以完成您想要的操作,并将一列单独分组
df$MONTH <- with(df, ave(ORIG_ROW, ORIG_ROW, FUN = seq_along))
df$MONTH看看。如果没有您的起始数据和预期结果的最小示例,人们将很难回答这个问题。R是基于一的,0:i
变成1:i
。另外,您是否希望MONTH
具有连续的值,1:n
其中n
是ORIG_ROW
每组的行数?@RuiBarradas是的,我注意到它对0:I和1:I的作用相同,我将在代码中进行调整,因为R是基于一的。是的,我希望“月”具有您所说的连续值。现在您的“能够处理”代码没有运行-您缺少了一个]
和一个)
。这很有效,非常感谢!抱歉没有提供data.frame以启动。:)
df <-
structure(list(NAME = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("POP1",
"POP2"), class = "factor"), ORIG_ROW = c(1L, 1L, 1L, 2L, 2L,
2L)), row.names = c(NA, -6L), class = "data.frame")