将新列添加到数据框,将现有值添加到范围内

时间:2014-11-20 14:56:48

标签: r

我想知道是否有人知道在数据框中创建新列的简单方法,在一定范围内从现有列中获取数据。

例如,我有这个数据框

range  col1 
1      5
2      4
3      9
4      5
5      2
6      8
7      9

我想使用col1中的数据创建col2,并使col2取值超出范围3

range  col1   col2
1      5       0
2      4       0
3      9       0
4      5       5
5      2       2
6      8       8
7      9       9

我试过了

data$col2 <- data$col1 [which(data$range > 3)) ]
data$col2 <- subset ( data$col1 , data$range >3 ) 

然而,这些都会产生错误:

replacement has 4 rows, data has 7

任何帮助非常感谢

2 个答案:

答案 0 :(得分:3)

即使没有ifelse,您也可以这样做:

data$new <- with(data, (range > 3) * col1)
data
#  range col1 new
#1     1    5   0
#2     2    4   0
#3     3    9   0
#4     4    5   5
#5     5    2   2
#6     6    8   8
#7     7    9   9

答案 1 :(得分:1)

尝试ifelse

 transform(data, col2=ifelse(range >3, col1, 0))
 #   range col1 col2
 #1     1    5    0
 #2     2    4    0
 #3     3    9    0
 #4     4    5    5
 #5     5    2    2
 #6     6    8    8
 #7     7    9    9