我有一个包含一个列表的数据框
df <- data.frame(names=1:6)
df$V1<- list(c("NO"), c("NO","NO"), c("NO", "YES"), c("YES", "NO", "YES"), c("NO", "NO", "NO"), c("YES"))
names V1
1 1 NO
2 2 NO, NO
3 3 NO, YES
4 4 YES, NO, YES
5 5 NO, NO, NO
6 6 YES
我想创建一个第三个变量,它给了我一个&#34; YES&#34;每当列表包含任何&#34; YES&#34;和一个&#34; NO&#34;如果列表只包含&#34; NO&#34;,就像这样:
names V1 V2
1 1 NO NO
2 2 NO, NO NO
3 3 NO, YES YES
4 4 YES, NO, YES YES
5 5 NO, NO, NO NO
6 6 YES YES
答案 0 :(得分:1)
您也可以使用ifelse
。如果存在“是”的情况,则V2 =是,否则V2 =否。
df$V2 <- ifelse(grepl("YES", df$V1), "YES", "NO")
答案 1 :(得分:-1)
你可以在V1变量上使用sapply或lapply来做你想做的任何事情。例如,如果您想要最后一个元素:
df$V2 = sapply(df$V1, tail, n = 1)
> df
names V1 V2
1 1 NO NO
2 2 NO, NO NO
3 3 NO, YES YES
4 4 YES, NO, YES YES
5 5 NO, NO, NO NO
6 6 YES YES
这将在df $ V1中的每个元素上逐个运行tail函数。