Как бы вы создали из фрейма данных вектор, который дает для каждой строки количество столбцов, которые являются «NA» (или пользовательским значением) в этой строке и в строках n выше и m строки ниже.
Итак, если m = n = 1 (т.е. сколько столбцов в каждой строке являются NA и имеют NA непосредственно до и после), и мой фрейм данных
structure(list(X = 1:8, A = c(3L, NA, 10L, NA, 6L, NA, 5L, NA
), B = c(6L, NA, NA, NA, 8L, NA, 13L, NA), C = c(NA, 12L, 14L,
NA, NA, NA, 9L, NA), D = c(NA, NA, NA, NA, NA, 11L, 7L, NA)), .Names = c("X",
"A", "B", "C", "D"), class = "data.frame", row.names = c(NA,
-8L))
i.e.
t X A B C D
1 1 3 6 NA NA
2 2 NA NA 12 NA
3 3 10 NA 14 NA
4 4 NA NA NA NA
5 5 6 8 NA NA
6 6 NA NA NA 11
7 7 5 13 9 7
8 8 NA NA NA NA
Я хочу вектор
count
0
1
2
1
1
0
0
0
(если первая и последняя записи NA
, это нормально). Я пытаюсь имитировать функцию COUNTIFS
в Excel, то есть COUNTIFS(B2:F2,"",B3:F3,"",B4:F4,"")
для строки 3.
count
там равно 1. - person Hugh   schedule 09.04.2013i
, столбецj
: если в столбцеj
есть NA дляn
строк до иm
строк после строкиi
, мы считаем это. Таким образом, во второй строке толькоNA
в столбце «D» имеетNA
непосредственно над и под ним. - person mathematical.coffee   schedule 09.04.2013count
всегда равны 0?) - person mathematical.coffee   schedule 09.04.2013NA
, но я не суетился. Истинное значение в этой строке состоит в том, что условие бессмысленно, но меня устраивает 0. Для более высоких m или n то же самое будет верно для первого n и последние m строк. - person Hugh   schedule 09.04.2013