【问题标题】:Create a logic based column in R data frame在 R 数据框中创建基于逻辑的列
【发布时间】:2020-07-04 13:52:08
【问题描述】:

我正在尝试创建一个循环/函数或任何将在我的 df 中逐行运行的工作,并根据其他两列的值给我一个新列。

例如,数据框如下所示:

V1 <- c('A','A','A','B','B','B')
V2 <- c('X','X','Y','Y','Z','Z')
df <- data.frame(V1,V2)
df

V1  V2
A   X           
A   X           
A   Y           
B   Y           
B   Z           
B   Z

第三列计算后的逻辑如下:

if V1 = A & V2 = X, then V3 = r
if V1 = B & V2 = X, then V3 = t
if V1 = A & V2 = Y, then V3 = n
if V1 = B & V2 = Y, then V3 = n
if V1 = A & V2 = Z, then V3 = x
if V1 = A & V2 = Z, then V3 = x

这将导致数据框看起来像这样:

V1  V2  V3
A   X   r       
A   X   t       
A   Y   n       
B   Y   n       
B   Z   x       
B   Z   x

【问题讨论】:

    标签: r function loops for-loop


    【解决方案1】:

    为了避免ifelse()你可以试试这个。另外,检查您的最终输出。

    #Conditions
    c1 <- df$V1 == 'A' & df$V2 == 'X'
    c2 <- df$V1 == 'B' & df$V2 == 'X'
    c3 <- df$V1 == 'A' & df$V2 == 'Y'
    c4 <- df$V1 == 'B' & df$V2 == 'Y'
    c5 <- df$V1 == 'A' & df$V2 == 'Z'
    c6 <- df$V1 == 'A' & df$V2 == 'Z'
    
    #Create variable
    
    df$V3 <- NA
    
    #Assign
    
    df$V3[c1] <- 'r'
    df$V3[c2] <- 't'
    df$V3[c3] <- 'n'
    df$V3[c4] <- 'n'
    df$V3[c5] <- 'x'
    df$V3[c6] <- 'x'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-15
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      相关资源
      最近更新 更多