R 添加“按组求和”的新列
假设我有这样一个数据帧:R 添加“按组求和”的新列,r,R,假设我有这样一个数据帧: set.seed(123) df <- as.data.frame(cbind(y<-sample(c("A","B","C"),10,T), X<-sample(c(1,2,3),10,T))) df <- df[order(df$V1),] set.seed(123) df至少在@mnel的第一点上,我同意他的观点。在他引用的答案中,我没有看到ave,我认为这是“最简单的”base-R方法。使用这种data.frame(cbind(…)构造
set.seed(123)
df <- as.data.frame(cbind(y<-sample(c("A","B","C"),10,T), X<-sample(c(1,2,3),10,T)))
df <- df[order(df$V1),]
set.seed(123)
df至少在@mnel的第一点上,我同意他的观点。在他引用的答案中,我没有看到ave
,我认为这是“最简单的”base-R方法。使用这种data.frame(cbind(…)
构造应该是非法的,证明这种构造的教师应该被剥夺资格
set.seed(123)
df<-data.frame(y=sample( c("A","B","C"), 10, T),
X=sample(c (1,2,3), 10, T))
df<-df[order(df$y),] # that step is not necessary for success.
df
df$sum <- ave(df$X, df$y, FUN=sum)
df
y X sum
1 A 3 6
6 A 3 6
3 B 3 8
7 B 1 8
9 B 1 8
10 B 3 8
2 C 2 6
4 C 2 6
5 C 1 6
8 C 1 6
set.seed(123)
dfdfcbind
还将强制X
为字符向量,您可能希望1-3为数值。
set.seed(123)
df<-data.frame(y=sample( c("A","B","C"), 10, T),
X=sample(c (1,2,3), 10, T))
df<-df[order(df$y),] # that step is not necessary for success.
df
df$sum <- ave(df$X, df$y, FUN=sum)
df
y X sum
1 A 3 6
6 A 3 6
3 B 3 8
7 B 1 8
9 B 1 8
10 B 3 8
2 C 2 6
4 C 2 6
5 C 1 6
8 C 1 6