Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 添加“按组求和”的新列_R - Fatal编程技术网

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)

df
df
cbind
还将强制
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