我想用combi從dplyr
的gather
從tidyr
包spread
,並且count
國家:
library(dplyr)
library(tidyr)
df = data.frame(x = c(1,1,1,2), a = c(0,1,2,1), b = c(0,0,2,2), c = c(0,1,1,1))
res = df %>%
gather(variable, value, -x) %>%
count(x, variable, value) %>%
spread(variable, n, fill = 0)
# Source: local data frame [5 x 5]
#
# x value a b c
# 1 1 0 1 2 1
# 2 1 1 1 0 2
# 3 1 2 1 1 0
# 4 2 1 1 0 1
# 5 2 2 0 1 0
本質上講,你首先更改數據集的格式:
head(df %>%
gather(variable, value, -x))
# x variable value
#1 1 a 0
#2 1 a 1
#3 1 a 2
#4 2 a 1
#5 1 b 0
#6 1 b 0
,它允許您使用count
得到有關特定值出現在列a
到c
的列的信息。之後,使用spread
將數據集重新格式化爲所需的格式。
如果你願意,你可以添加一個dcast融化例如自己(以及在某些點耙;))。我現在使用'dplyr'很多,並專注於此。 –
沒關係。這與您展示的方法相同。所以,我認爲這是有道理的添加您的帖子。否則,我將把它作爲評論。謝謝。 – akrun