我正在尝试找到一种方法来仅转置我的R数据框中的一列。
这是原始数据帧:
Fruits Name Count
Apple Tom 2
Apple Bob 2
Banana Tom 1
这就是我想要的数据框:
Name Apple Banana
Tom 2 1
Bob 2 0
请提前提供建议和感谢!
答案 0 :(得分:3)
library(dplyr)
library(tidyr)
df <- data.frame(Fruits = c("Apple", "Apple", "Banana"),
Name = c("Tom", "Bob", "Tom"),
Count = c(2,2,1))
df
> df
Fruits Name Count
1 Apple Tom 2
2 Apple Bob 2
3 Banana Tom 1
df2 <- df %>%
tidyr::spread(key = Fruits, value = Count) %>%
replace(is.na(.), 0) %>%
dplyr::arrange(desc(Name))
df2
> df2
Name Apple Banana
1 Tom 2 1
2 Bob 2 0
答案 1 :(得分:3)
使用@bbiasi数据:
tidyr::spread(df2, Fruits, Count, fill = 0)
# Name Apple Banana
#1 Bob 2 0
#2 Tom 2 1
upd:在发布此消息之前,还没有看到@Jilber Urbina的评论