我想根据同一行中其他元素是否为某个值来更改数据帧行中某个元素的值。
我具有以下格式的数据框:
p_id year Id number1 number2 result
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 1 1968 1 1 0 NA
2 1 1969 1 1 10 NA
3 1 1970 81 9 7 NA
4 1 1971 0 0 0 NA
5 1 1972 0 0 10 NA
6 1 1973 0 0 0 NA
7 1 1974 1 1 10 NA
当Id = 1时,number1 = 1和number2 = 10我想在结果列中写入1,否则写入0。
这就是它的样子:
p_id year Id number1 number2 result
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 1 1968 1 1 0 0
2 1 1969 1 1 10 1
3 1 1970 81 9 7 0
4 1 1971 0 0 0 0
5 1 1972 0 0 10 0
6 1 1973 0 0 0 0
7 1 1974 1 1 10 1
我应该使用lapply()解决此问题。
对不起,如果这是转贴,我到目前为止找不到解决方案。
谢谢!
答案 0 :(得分:2)
另一个没有ifelse
data$result <- with(data, +(Id == 1 & number1 == 1& number2 == 10))
答案 1 :(得分:1)
假设您要更改的数据帧称为data
,下面的代码行应能达到您想要的结果。
data$result < -ifelse(data$Id = 1 & data$number1 = 1 & data$number2 = 10, 1, 0)
我希望这会有所帮助!
答案 2 :(得分:1)
假设您的data.frame
被称为d1
:
d1[["result"]] <- ifelse(d1[["Id"]] == 1L & d1[["numer1"]] == 1L & d1[["number2"]] == 10L, 1L, 0L)