计算数据框中前两列中的个数
Count number of ones in first two columns in a data frame
比如说,我有一个如下所示的数据框,包含三列。我想创建第四列,其值是前两列中的数字之和
迭代版本
col1 = c(1,1,1,0,0)
col2 = c(1,0,0,0,1)
col3 = c(0,1,1,1,0)
df = data.frame(col1,col2,col3)
df$col4 = 0;
for(i in 1:nrow(df))
{
print(i)
countone = 0
for(j in 1:2)
{
if(df[i,j] == 1)
{
countone = countone + 1;
}
}
df[i,4] = countone
}
输入
col1 col2 col3
1 1 1 0
2 1 0 1
3 1 0 1
4 0 0 1
5 0 1 0
预期输出
> df
col1 col2 col3 col4
1 1 1 0 2
2 1 0 1 1
3 1 0 1 1
4 0 0 1 0
5 0 1 0 1
df$col4 <- rowSums(df[,1:2])
这称为行总和。
并且不需要初始化行:df$col4 = 0
.
(此代码有效,因为我们知道这些条目只能是 0 或 1。适用于更通用代码的东西是 rowSums(df[,1:2]==1)
,如果需要,可以使用 ... na.rm = T
。)
比如说,我有一个如下所示的数据框,包含三列。我想创建第四列,其值是前两列中的数字之和
迭代版本
col1 = c(1,1,1,0,0)
col2 = c(1,0,0,0,1)
col3 = c(0,1,1,1,0)
df = data.frame(col1,col2,col3)
df$col4 = 0;
for(i in 1:nrow(df))
{
print(i)
countone = 0
for(j in 1:2)
{
if(df[i,j] == 1)
{
countone = countone + 1;
}
}
df[i,4] = countone
}
输入
col1 col2 col3
1 1 1 0
2 1 0 1
3 1 0 1
4 0 0 1
5 0 1 0
预期输出
> df
col1 col2 col3 col4
1 1 1 0 2
2 1 0 1 1
3 1 0 1 1
4 0 0 1 0
5 0 1 0 1
df$col4 <- rowSums(df[,1:2])
这称为行总和。
并且不需要初始化行:df$col4 = 0
.
(此代码有效,因为我们知道这些条目只能是 0 或 1。适用于更通用代码的东西是 rowSums(df[,1:2]==1)
,如果需要,可以使用 ... na.rm = T
。)