У меня есть df, содержащий слова (столбцы w1, w2 и т. Д.) И их длительности, некоторые из которых являются NA (столбцы d1, d2 и т. Д.), Например:
set.seed(47)
df <- data.frame(
w1 = c(sample(LETTERS[1:4], 10, replace = T)),
w2 = c(sample(LETTERS[1:4], 10, replace = T)),
w3 = c(sample(LETTERS[1:4], 10, replace = T)),
w4 = c(sample(LETTERS[1:4], 10, replace = T)),
d1 = c(rep(NA, 3), round(rnorm(7),3)),
d2 = c(round(rnorm(6),3), NA, round(rnorm(3),3)),
d3 = c(round(rnorm(2),3), rep(NA,2), round(rnorm(6),3)),
d4 = c(round(rnorm(1),3), NA, round(rnorm(8),3))
)
w1 w2 w3 w4 d1 d2 d3 d4
1 D A A C NA -2.322 -0.693 -0.488
2 B C C B NA -1.967 0.261 NA
3 D A C B NA 0.028 NA -0.92
4 D C A A -1.566 0.484 NA 0.898
5 C C C D 0.249 0.144 0.507 -0.356
6 C D B B -0.34 -1.2 0.564 1.032
7 B B A A 0.417 NA 0.061 0.664
8 B A A D -0.326 0.885 -0.109 0.97
9 C A C B -0.89 0.887 -0.155 1.676
10 D B D C -1.608 0.001 0.95 1.988
То, что я хотел бы получить, - это список по частоте всех этих слов токенов , которые не NA в соответствующем столбце длительности. Так, например, «D» в столбце w1
- это NA в d1
, поэтому этот токен не должен быть включен в подсчет частоты. Как это запрограммировано в базе R, в идеале в одной строке кода?