我想根据同一行中其他元素是否为某个值来更改数据帧行中元素的值。
我具有以下格式的数据框:
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()解决此问题的方法。
对不起,如果这是转贴,我到目前为止找不到解决方案。
谢谢!
假设您尝试更改的数据帧称为data
,以下代码将为您工作。
data$result < -ifelse(data$Id = 1 & data$number1 = 1 & data$number2 = 10, 1, 0)
我希望这会有所帮助!
假设您的data.frame
被称为d1
:
d1[["result"]] <- ifelse(d1[["Id"]] == 1L & d1[["numer1"]] == 1L & d1[["number2"]] == 10L, 1L, 0L)