比方說,我們擁有的數據幀如何使用dplyr獲得計數?
df <- data.frame(x = c("a", "a", "b", "a", "c"))
使用dplyr數,我們得到
df %>% count(x)
x n
1 a 3
2 b 1
3 c 1
我現在想要做對產出的正列計數。如果第n列命名爲m,我要查找的結果是
m n
1 1 2
2 3 1
這怎麼可以用dplyr來完成?
非常感謝!
比方說,我們擁有的數據幀如何使用dplyr獲得計數?
df <- data.frame(x = c("a", "a", "b", "a", "c"))
使用dplyr數,我們得到
df %>% count(x)
x n
1 a 3
2 b 1
3 c 1
我現在想要做對產出的正列計數。如果第n列命名爲m,我要查找的結果是
m n
1 1 2
2 3 1
這怎麼可以用dplyr來完成?
非常感謝!
dplyr
count(n)
似乎有問題。
例如:
d <- data.frame(n = sample(1:2, 10, TRUE), x = 1:10)
d %>% count(n)
一種解決方法是重命名n
:
df %>% # using data defined in question
count(x) %>%
rename(m = n) %>%
count(m)
嗯,嗯,也許這是一個錯誤 – hadley 2014-11-04 22:44:33
@DMC完成這項工作。謝謝! – user2058387 2014-11-05 03:33:38
@hadley如果這是一個錯誤,或者如果有更優雅的解決方案,請告訴我們。 – user2058387 2014-11-05 03:34:34
sum((df %>% count(x))$n)
##[1] 5
如果你想數:
df %>% count(x) %>% summarise(length(n))
# length(n)
#1 3
如果你想總和:
df %>% count(x) %>% summarise(sum(n))
# sum(n)
#1 5
編輯:我錯了。沒有dplyr
的最新版本,所以我沒有count
函數。
隨着dplyr
一個方法來計算是n()
在你的榜樣,你會做以下,以獲得第一計數:
df <- data.frame(x = c("a", "a", "b", "a", "c"))
df %>% group_by(x) %>% summarise(count=n())
然後,如果你想算特定的數,你可以做的事件:
df %>% group_by(x) %>% summarise(count=n()) %>% group_by(count) %>% summarise(newCount=n())
這是一個dplyr
的方法。
如果您願意嘗試data.table,那可能是相當直接的。
df <- data.frame(x = c("a", "a", "b", "a", "c"))
library(data.table)
setDT(df)[, .N, by=x][, list(count_of_N=.N), by=N]
# N count_of_N
# 1: 3 1
# 2: 1 2
它不是純plyr但是這可能工作:
countr<-function(x){data.frame(table(x))}
t<-count(df,x)
countr(t[,2])
你想總的n個或牛每獨特元素的頻率算? – 2014-11-04 20:31:53
'n'的總數是不是'nrow(df)'? – davechilders 2014-11-04 20:51:07
@beginneR:我的意思是n的每個獨特元素的頻率,並且已經更新了問題,以便更清楚。謝謝! – user2058387 2014-11-05 03:10:26