所以我试图在不计算NA的情况下计算列中每个组的值的数量。 我试过用“长度”来做这件事,但是当我在查看每组的值时,我无法弄清楚如何告诉“长度”离开NAs。
我发现了类似的问题,但无法弄清楚如何将解决方案应用到我的案例中:
Length of columns excluding NA in r
http://r.789695.n4.nabble.com/Length-of-vector-without-NA-s-td2552208.html
我已经创建了一个最小的工作示例来说明问题:
# making some data
value <- c(3,10,9,"NA",5,"NA","NA",4)
group <- c("A","A","B","C","B","A","A","C")
example <- data.frame(value, group)
example
# value group
# 1 3 A
# 2 10 A
# 3 9 B
# 4 NA C
# 5 5 B
# 6 NA A
# 7 NA A
# 8 4 C
# trying to extract the number of values (without counting NAs) for each group
n.example <- tapply(example$value, list(example$group), length)
n.example
# A B C
# 4 2 2
#Correct answer would be:
# A B C
# 2 2 1
我会感激任何帮助!
THX, 隆突
答案 0 :(得分:3)
如果我们在没有引用的情况下使用真实的NA,我们可以使用is.na
和table
来查找计数。
table(!is.na(value), group)[2,]
#A B C
#2 2 1
value <- c(3,10,9,NA,5,NA,NA,4)
group <- c("A","A","B","C","B","A","A","C")
答案 1 :(得分:2)
...或使用函数过滤器和来自包dplyr的计数:
library(dplyr)
example %>%
filter(!is.na(value)) %>%
count(group)
PS:正如akrun所提到的,在没有引号的向量中指定NA。否则,价值将被转换为字符向量c(&#34; 3&#34;,&#34; 10&#34;,&#34; 9&#34;,&#34; NA&#34;,... 。)
答案 2 :(得分:1)
可能有更优雅的方法可以解决,但一种方法是使用匿名函数删除NA之前的长度。
value <- c(3,10,9,NA,5,NA,NA,4)
顺便说一句,您在示例中将NA括在引号中。这将导致R将“NA”视为字符串而不是缺失值。使用正确的解决方案,您将无法获得预期的价值。我相信你要找的例子是
<event name="item:deleting">
<handler type="Your.Assembly.Name.And.Handler.Class, Your.Assembly.Name" method="OnItemDeleting" />
... other event handlers ...
</event>