jon*_*nas 1 r dataframe dummy-variable
我需要根据调查数据制作一个虚拟数据框,其中受访者在数据框中的几列中说出了单词.这是一个简化的例子来说明我需要做什么?这里用一个字母表示一个单词.
id <- c(1:6)
v.1 <- c("a","b","d","e","a","c")
v.2 <- c("b","a","a","a","b","a")
v.3 <- c("e","c","b","b","e","b")
df <- data.frame(id,v.1,v.2,v.3)
> df
id v.1 v.2 v.3
1 1 a b e
2 2 b a c
3 3 d a b
4 4 e a b
5 5 a b e
6 6 c a b
Run Code Online (Sandbox Code Playgroud)
这是我想要的输出?
> print(df.dummy)
id a b c d e
1: 1 1 1 0 0 1
2: 2 1 1 1 0 0
3: 3 1 1 0 1 0
4: 4 1 1 0 0 1
5: 5 1 1 0 0 1
6: 6 1 1 1 0 0
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
你可以使用reshape2:
library(reshape2)
dcast( melt(df,id.var="id"), id ~ value, length)
Run Code Online (Sandbox Code Playgroud)
这使
id a b c d e
1 1 1 1 0 0 1
2 2 1 1 1 0 0
3 3 1 1 0 1 0
4 4 1 1 0 0 1
5 5 1 1 0 0 1
6 6 1 1 1 0 0
Run Code Online (Sandbox Code Playgroud)
或者用recast"一步熔化和浇铸":
recast(df, id ~ value, id.var = "id", length)
Run Code Online (Sandbox Code Playgroud)
不使用包,你可以做到table( rep(df$id,ncol(df)-1), unlist(df[-1]) ).
| 归档时间: |
|
| 查看次数: |
1380 次 |
| 最近记录: |