大家好我是triying來解決R中的一個小問題。我有下一個數據幀(我在最後部分添加dput()
版本) :在同一數據幀中考慮起始列連接到索引變量的行中元素數的計數
ID Index s1 s2 s3 s4 s5 s6 s7 s8 s9 s10
1 a 1 A A A A A A A A A A
2 b 3 <NA> <NA> A A A A A A A A
3 c 5 <NA> <NA> <NA> <NA> A A A A A A
4 d 1 A A A A A A A A A A
5 e 1 A A A A A A A A A A
6 f 6 <NA> <NA> <NA> <NA> <NA> A A A A A
7 g 6 <NA> <NA> <NA> <NA> <NA> A A A A A
8 h 4 <NA> <NA> <NA> A A A A A A A
以我數據幀Test
,Index
顯示在每行中的NA
第一非ocurrence。現在我想爲新變量中的每一行計算A
考慮這樣的列的數量:第一列將是第一個非NA
發生的列,例如在b
ID
的情況下它具有Index=3
和I想要計算自此列以來的A
直到4列後,在此情況下直到列s3+4=s7
。這適用於所有行。我想獲得這樣的事:
ID Index s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 Count
1 a 1 A A A A A A A A A A 5
2 b 3 <NA> <NA> A A A A A A A A 5
3 c 5 <NA> <NA> <NA> <NA> A A A A A A 5
4 d 1 A A A A A A A A A A 5
5 e 1 A A A A A A A A A A 5
6 f 6 <NA> <NA> <NA> <NA> <NA> A A A A A 5
7 g 6 <NA> <NA> <NA> <NA> <NA> A A A A A 5
8 h 4 <NA> <NA> <NA> A A A A A A A 5
我用這個代碼,但我得到了一個錯誤:
Test$Count=apply(Test[,c(-1,-2,Test$Index.Test$Index+4)] , 1 , function(x) length(which(!is.na(x) & x=="A")))
請你的幫助是值得歡迎的,在dput()
版本我的數據幀是下一:
structure(list(ID = c("a", "b", "c", "d", "e", "f", "g", "h"),
Index = c(1, 3, 5, 1, 1, 6, 6, 4), s1 = c("A", NA, NA, "A",
"A", NA, NA, NA), s2 = c("A", NA, NA, "A", "A", NA, NA, NA
), s3 = c("A", "A", NA, "A", "A", NA, NA, NA), s4 = c("A",
"A", NA, "A", "A", NA, NA, "A"), s5 = c("A", "A", "A", "A",
"A", NA, NA, "A"), s6 = c("A", "A", "A", "A", "A", "A", "A",
"A"), s7 = c("A", "A", "A", "A", "A", "A", "A", "A"), s8 = c("A",
"A", "A", "A", "A", "A", "A", "A"), s9 = c("A", "A", "A",
"A", "A", "A", "A", "A"), s10 = c("A", "A", "A", "A", "A",
"A", "A", "A")), .Names = c("ID", "Index", "s1", "s2", "s3",
"s4", "s5", "s6", "s7", "s8", "s9", "s10"), row.names = c(NA,
8L), class = "data.frame")
非常感謝的。
謝謝@SvenHohenstein,但我不能確定A的數量,我可以有其他字母,如B,C等。我想數一數。 – Duck
@Duck查看更新。 –
親愛的@SvenHohenstein我正在使用其他類似的數據框,並且出現此錯誤:'錯誤en'[.data.frame'(Test [x, - (1:2)],,idx2): 未定義的列被選中。你能幫我嗎,我添加我的數據框在下一個鏈接:https://dl.dropboxusercontent.com/u/83787253/Test.RData我不知道如何解決這個問題,請。 – Duck