通过将重复的行分散到 R 中的列中来创建“虚拟变量”

Reg*_*ton 5 r dplyr

在此先感谢您的帮助。

spread在重复行上使用(从长到宽)有几个问题,unite例如this

我认为让我的问题与众不同的是需要输出虚拟变量。

我预计会有这样的输入:

df <- data.frame(id = c(1,1,2,3,4), fruit = c("apple","pear","apple","orange","apple"))
Run Code Online (Sandbox Code Playgroud)

和这样的输出:

output <- data.frame(id=c(1,2,3,4), apple = c(1,1,0,1), pear = c(1,0,0,0), orange = c(0,0,1,0))
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。谢谢。

m0n*_*awk 6

使用tidyverse您可以添加新列而不是使用spread.

library(tidyverse)

df %>% mutate(i = 1) %>% spread(fruit, i, fill = 0)

# result
  id apple orange pear
1  1     1      0    1
2  2     1      0    0
3  3     0      1    0
4  4     1      0    0
Run Code Online (Sandbox Code Playgroud)