根据r中同一行中其他元素的值更改数据帧值

时间:2020-06-03 17:50:43

标签: r apply lapply

我想根据同一行中其他元素是否为某个值来更改数据帧行中某个元素的值。

我具有以下格式的数据框:

    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()解决此问题。

对不起,如果这是转贴,我到目前为止找不到解决方案。

谢谢!

3 个答案:

答案 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)