![](/img/trans.png)
[英]How to create a new variable (column) in my R data frame based on this specific logic?
[英]Create a logic based column in R data frame
我正在尝试在我的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
为了避免ifelse()
你可以试试这个。 另外,检查您的最终 output。
#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'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.