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

问题描述 投票:0回答:2

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

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

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

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

谢谢!

r apply lapply
2个回答
0
投票

假设您尝试更改的数据帧称为data,以下代码将为您工作。

data$result < -ifelse(data$Id = 1 & data$number1 = 1 & data$number2 = 10, 1, 0)

我希望这会有所帮助!


0
投票

假设您的data.frame被称为d1

d1[["result"]] <-  ifelse(d1[["Id"]] == 1L & d1[["numer1"]] == 1L & d1[["number2"]] == 10L, 1L, 0L)
© www.soinside.com 2019 - 2024. All rights reserved.