Сравните каждую строку строки из столбцов и добавьте условие, чтобы оценить и напечатать результат в новом столбце. - PullRequest
2 голосов
/ 05 марта 2019

У меня есть датафрейм, как показано ниже

string1  string2   var1  var2
  T        T        1     1    
  T        F        0     1
  F        F        0     0

Я хочу перебрать каждую строку с n числом строк и добавить условия, как показано ниже

 Iterate n number of rows
    if(string1 == T & sting2 == F){
      if(va1 > 1 & var2 > 1){
        # do some operation and append to new column
        # For example
        new column <- var1 + var2
       }
     elif(var1 == 0 & var2 > 1){
          # Do some adds / subs with var1 & var2 and append to new column
          }
     elif{var1 > 1 & var2 ==0){
          # Do some adds / subs with var1 & var2 and append to new column
     } 
    }
   elif(string1 == F & sting2 == T){
    # again repeat set of if-else opration on var1 and var2 as mentioned in 
       above if else condition
   }
   elif(nth condition)

Как мне достичь в R

Ответы [ 2 ]

2 голосов
/ 05 марта 2019

Основываясь на вашем описании в комментариях, я думаю, что вам нужно это

df$new_col <- with(df, ifelse(string1 & string2 & var1 > 0 & var2 > 0, var1 + var2, 0))

df
#  string1 string2 var1 var2 new_col
#1    TRUE    TRUE    1    1       2
#2    TRUE   FALSE    0    1       0
#3   FALSE   FALSE    0    0       0

Это складывает var1 и var2, если string1 и string2 равно TRUE и оба var1и var2 больше 0, иначе new_col будет равно 0.

1 голос
/ 05 марта 2019
string1 <-c(T,T,F)
string2 <-c(T,F,F)
var1 <- c(1,0,0)
var2 <- c(1,1,0)
df <- data.frame(string1,string2,var1,var2)
df
  string1 string2 var1 var2
1    TRUE    TRUE    1    1
2    TRUE   FALSE    0    1
3   FALSE   FALSE    0    0
df$new_column <- apply(df, 1, function(x) ifelse(x[1] == T & x[2] == T & x[3] > 0 & x[4] > 0, x[1]+x[2], NA))
df
  string1 string2 var1 var2 new_column
1    TRUE    TRUE    1    1          2
2    TRUE   FALSE    0    1         NA
3   FALSE   FALSE    0    0         NA

Замените NA на 0, если вы хотите иметь 0 в конечном результате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...