在R中加两列

时间:2014-09-25 19:41:30

标签: r

当我尝试在R中添加两列来获取产品时,我感到有点尴尬。

我试过了

sum(col1,col2)

但是会返回

Error in Summary.factor(c(49L, 48L, 47L, 46L, 46L, 45L, 45L, 44L, 43L,  : 
  sum not meaningful for factors

我觉得这很简单!两列都包含整数。

7 个答案:

答案 0 :(得分:20)

sum函数将所有数字加在一起产生一个数字,而不是一个向量(好吧,至少不是长度大于1的向量)。

看起来好像至少有一个列是一个因素。您可以通过选中

将它们转换为数字向量
head(as.numeric(data$col1))  # make sure this gives you the right output

如果看起来正确,请执行

data$col1 <- as.numeric(data$col1)
data$col2 <- as.numeric(data$col2)

您可能必须先将它们转换为字符。在哪种情况下

data$col1 <- as.numeric(as.character(data$col1))
data$col2 <- as.numeric(as.character(data$col2))

如果不能看到您的数据,很难说您应该做什么。

一旦列是数字,您只需要

data$col3 <- data$col1 + data$col2

答案 1 :(得分:0)

可能是您的一列或两列可能有一个因素,或者更有可能的是您的列可能被格式化为因子。请你试试str(col1)和str(col2)吗?这应该告诉你这些列的格式。

我不确定您是否尝试添加列的行以生成新列,或者只是添加两列中的所有数字以获得单个数字。

答案 2 :(得分:0)

lst

这可用于忽略excel工作表中的空白值。
我已经使用了欧元统计数据集。

此示例可在R中使用:

tablename$column3=rowSums(cbind(tablename$column1,tablename$column2),na.rm=TRUE)

答案 3 :(得分:0)

您可以这样做:

    df <- data.frame("a" = c(1,2,3,4), "b" = c(4,3,2,1), "x_ind" = c(1,0,1,1), "y_ind" = c(0,0,1,1), "z_ind" = c(0,1,1,1) )
df %>% mutate( bi  = ifelse((df$x_ind + df$y_ind +df$z_ind)== 3, 1,0 ))

答案 4 :(得分:0)

您可以使用for循环:

for (i in 1:nrow(df)) {
   df$col3[i] <- df$col1[i] + df$col2[i]
}

答案 5 :(得分:0)

#两种方式

df$New1 <- df$X1+df$X2+df$X3

#or 选择带有 X 的列

df <-df %>% select(contains('X')) %>% mutate(New2=rowSums(.))

答案 6 :(得分:-1)

尝试使用此方法创建一列3作为表中列1 +列2的总和

tablename$column3=rowSums(cbind(tablename$column1,tablename$column2))