【发布时间】:2020-05-13 20:29:30
【问题描述】:
我有一个如下的数据框:
ID | Provider | String
-----------------------
1 | A | A, NA, NA, B, NA
2 | B | NA, A, B, NA, NA, NA
3 | B | B
4 | C | C, NA, NA, A, NA, NA, C, NA
我想计算字符串中匹配“提供者”列中的值到不匹配值或末尾的值之后的 NA。
想要的输出是
ID | Provider | String | Output
------------------------------------------------------
1 | A | A, NA, NA, B, NA | 2
2 | B | NA, A, B, NA, NA, NA | 3
3 | B | B | 0
4 | C | C, NA, NA, A, NA, NA, C, NA | 3
ID1 有一个提供者 A,并且字符串在 A 之后遇到 B 之前有两个 NA。 ID2 有一个提供者 B,字符串在 B 之后有三个 NA。 ID3 有一个提供者 B 并且字符串在 B 之后没有 NA。 ID4 有一个提供者 C,字符串在 C 之后有两个 NA,然后再遇到 A + 在第二个 C 之后再有一个 NA。
我最初的方法是先使用分词器计算总 NA
df$Output0 <- sapply(df$String, function(x) sum(unlist(tokenize_words(x)) %in% c('NA')))
但是,它返回全 0。
我应该如何解决以下问题?
【问题讨论】:
-
请使用
dput(df)的输出编辑问题。或者,如果dput(head(df, 20))的输出太大。
标签: r