从包含多个字符的列表中创建单个字符变量

时间:2018-05-11 18:40:14

标签: r list

我有一个包含一个列表的数据框

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

2 个答案:

答案 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函数。