Jas*_*y.W 5 r subset dataframe
我有一个数据框:
Y X1 X2 X3
1 1 0 1
1 0 1 1
0 1 0 1
0 0 0 1
1 1 1 0
0 1 1 0
Run Code Online (Sandbox Code Playgroud)
我想Y根据等于 的其他列对列中的所有行求和1,即sum(Y=1|Xi =1)。例如,对于列X1,s1 = sum(Y=1|Xi =1) =1 + 0 +1+0 =2
Y X1
1 1
0 1
1 1
0 1
Run Code Online (Sandbox Code Playgroud)
对于X2列,s2 = sum(Y=1|Xi =1) = 0 +1+0 =1
Y X2
0 1
1 1
0 1
Run Code Online (Sandbox Code Playgroud)
对于X3列,s3 = sum(Y=1|Xi =1) = 1+1 +0+0 =2
Y X3
1 1
1 1
0 1
0 1
Run Code Online (Sandbox Code Playgroud)
我有一个大概的了解,以使用apply(df, 2, sum)为数据框的列,但我不知道如何子集基于每个列Xi,然后计算出sum的Y.任何帮助表示赞赏!
colSums当 Y*X 等于 1 时,您可以使用并计数。我认为 X2 列的所需输出存在错误。第 2 行和第 5 行包含 Y 和 X2 的 1。总和应该是 2。
x=read.table(text="Y X1 X2 X3
1 1 0 1
1 0 1 1
0 1 0 1
0 0 0 1
1 1 1 0
0 1 1 0",header=TRUE, stringsAsFactors=FALSE)
colSums(x[,-1]*x[,1])
X1 X2 X3
2 2 2
Run Code Online (Sandbox Code Playgroud)
您还可以使用crossprod(x[,1],as.matrix(x[,-1]))
X1 X2 X3
[1,] 2 2 2
Run Code Online (Sandbox Code Playgroud)