我的数据看起来像这样:
Q1 Q2 Q3 Q4
S NS S S
NS . S PMI
S S TMI S
PMI S S NS
唯一的选项是S,TMI,PMI,NS(或缺少,这是一个。)。我希望它看起来像这样(称为PCP的DF):
Q1 Q2 Q2 Q4
S 2 2 3 2
NS 1 1 0 1
PMI 1 0 0 1
TMI 0 0 1 0
. 0 1 0 0
我可以使用以下代码分两步进行操作:
Counts <- melt(table(PCP$Q1)) %>%
join(y = melt(table(PCP$Q2)), type = "full") %>%
join(y = melt(table(PCP$Q3)), type = "full") %>%
join(y = melt(table(PCP$Q4)), type = "full")
Counts <- melt(Counts, key='Var1')
Bur有一个很好的方法可以一步完成此操作,也许使用dplyr / plyr软件包?
答案 0 :(得分:0)
如何?
library(tidyverse)
PCP %>%
gather(question, answer) %>%
mutate(answer = replace(answer, answer==".", "Missing")) %>%
count(question, answer) %>%
spread(question, n, fill=0)
answer Q1 Q2 Q3 Q4 1 Missing 0 1 0 0 2 NS 1 1 0 1 3 PMI 1 0 0 1 4 S 2 2 3 2 5 TMI 0 0 1 0
答案 1 :(得分:0)
使用tidyverse
和reshape2
:
df %>%
gather(var, val) %>%
group_by(var) %>%
add_count(val) %>%
dcast(val ~ var, value.var = "n")
val Q1 Q2 Q3 Q4
1 . 0 1 0 0
2 NS 1 1 0 1
3 PMI 1 0 0 1
4 S 2 2 3 2
5 TMI 0 0 1 0