我有以下数据集
| 宠物店|第一天|第二天|第三天|
| --------------|--------------|--------------|--------------|
| A|制动爪|鱼|猫|
| A|鱼|鱼|猫|
| B|龟|猫|龟|
| A|制动爪|猫|龟|
| B|猫|兔子|制动爪|
| C|兔子|制动爪|兔子|
| C|制动爪|猫|鱼|
df = structure(list(Pet.Shop = c("A", "A", "B", "A", "B", "C", "C"
), Day1 = c("dog", "fish", "turtle", "dog", "cat", "rabbit",
"dog"), Day2 = c("fish", "fish", "cat", "cat", "rabbit", "dog",
"cat"), Day3 = c("cat", "cat", "turtle", "turtle", "dog", "rabbit",
"fish")), class = "data.frame", row.names = c(NA, -7L))
我尝试使用pivot_wider获得以下输出
| 宠物店|制动爪|猫|鱼|龟|兔子|
| --------------|--------------|--------------|--------------|--------------|--------------|
| A|1个|1个|1个|0|0|
| A|0|1个|二|0|0|
| B|0|1个|0|二|0|
| A|1个|1个|0|1个|0|
| B|1个|1个|0|0|1个|
| C|1个|0|0|0|二|
| C|1个|1个|1个|0|0|
我的代码如下所示,但我不确定values_from应该表示什么。
new_df <- df %>%
mutate(row = row_number()) %>%
pivot_wider(names_from = Item, values_from = XXX) %>%
select(-row)
感谢任何帮助。除了pivot_wider之外,还欢迎其他建议,谢谢!
2条答案
按热度按时间h9vpoimq1#
我们可以重塑为'长',然后做宽转换
gmxoilav2#
对于那些每次都很难理解
values_fn = length
的人(比如我)。下面是@akrun的相同代码,只是没有values_fn = length
:@akrun的代码中有一些有趣的特性:
names_to = NULL
,所以我们不必在最后删除名称1.将
names_from
和values_from
分配给一列value
1.创建一个唯一的标识符
row
,以便原始 Dataframe 中的每一行在整形后都能被唯一地标识。对于分组状态count(Pet.Shop, row, value)
中的计数也很重要values_fill = 0
以用0填充NA。