如何计算R中数据帧中特定值的数量?
我有一个数据帧df:如何计算R中数据帧中特定值的数量?,r,dataframe,R,Dataframe,我有一个数据帧df: a b c 1 5 5 2 3 5 3 3 5 3 3 3 3 3 2 4 2 2 1 2 2 我想计算我一行有多少个3,例如,我怎么做? 例如,第2行=1,第3行=2等。 请给出建议。您可以使用应用和表格来进行此操作。输出是一个列表,提供每行唯一元素的计数。(如果您对此感兴趣,设置apply to2的边距将为您提供每列的输出。) 更新:由于其他人提供的解决方案同时产生了更多“有序”输出,因此我修改了我的方法,为此使用data.table::rbindlist #I ha
a b c
1 5 5
2 3 5
3 3 5
3 3 3
3 3 2
4 2 2
1 2 2
我想计算我一行有多少个3,例如,我怎么做?
例如,第2行=1,第3行=2等。
请给出建议。您可以使用
应用和表格来进行此操作。输出是一个列表,提供每行唯一元素的计数。(如果您对此感兴趣,设置apply to2
的边距将为您提供每列的输出。)
更新:由于其他人提供的解决方案同时产生了更多“有序”输出,因此我修改了我的方法,为此使用data.table::rbindlist
#I have skipped some of the last rows of your example
data <- read.table(text = "
a b c
1 5 5
2 3 5
3 3 5
3 3 3
", header = T, stringsAsFactors = F)
apply(data, 1, table)
# [[1]]
# 1 5
# 1 2
# [[2]]
# 2 3 5
# 1 1 1
# [[3]]
# 3 5
# 2 1
# [[4]]
# 3
# 3
#Update: output in more ordered fashion
library(data.table)
rbindlist(apply(data, 1, function(x) as.data.table(t(as.matrix(table(x)))))
,fill = TRUE
,use.names = TRUE)
# 1 5 2 3
# 1: 1 2 NA NA
# 2: NA 1 1 1
# 3: NA 1 NA 2
# 4: NA NA NA 3
#if necessary NA values might be replaced, see, e.g.,
##https://stackoverflow.com/questions/7235657/fastest-way-to-replace-nas-in-a-large-data-table
#我跳过了示例的最后几行
数据如果要计算所有值,@ManuelBickel的答案是好的。如果你真的只想知道3有多少,这可能更简单
rowSums(data==3)
[1] 0 1 2 3
如果希望以更有序的方式返回计数
set.seed(1)
m <- matrix(sample(c(1:3, 5), 15, replace=TRUE), 5, dimnames=list(LETTERS[1:5]))
m
# [,1] [,2] [,3]
# A 2 5 1
# B 2 5 1
# C 3 3 3
# D 5 3 2
# E 1 1 5
u <- sort(unique(as.vector(m)))
r <- sapply(setNames(u, u), function(x) rowSums(m == x))
r
# 1 2 3 5
# A 1 1 0 1
# B 1 1 0 1
# C 0 0 3 0
# D 0 1 1 1
# E 2 0 0 1
set.seed(1)
m您对每个条目的计数感兴趣,还是只对3个条目感兴趣?行和(df==3)
melt
将整个表延长,按组计数可能会更快