我想知道是否有人知道在数据框中创建新列的简单方法,在一定范围内从现有列中获取数据。
例如,我有这个数据框
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
任何帮助非常感谢
答案 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