我在R中有下表:
id | time_visited | outcome | url_link
-----|-------------------|---------|-------------------------
1 |2012-01-01 00:00:00| 1 |google.com
1 |2012-01-01 00:00:00| 1 |google.com/news
1 |2012-01-01 00:00:00| 1 |google.com/news/cnn
2 |2012-01-01 11:11:11| 0 |youtube.com
2 |2012-01-01 11:11:11| 0 |youtube.com/search
2 |2012-01-01 11:11:11| 0 |youtube.com/search/catvideos我试图使用传播数据,使用tidyr()::spread()获得下表:
扩展将在url_link变量上进行,它的值将由结果变量填充-然而,我仍然希望保留结果变量来表示该整体值。
我想要得到的桌子看起来是这样的:
id | time_visited | outcome | google.com | google.com/news | google.com/news/cnn | youtube.com...
-----|-------------------|---------|------------------------------|---------------------|--------------
1 |2012-01-01 00:00:00| 1 | 1 | 1 | 1 | 0
2 |2012-01-01 11:11:11| 0 | 0 | 0 | 0 | 1我没有将所有的列添加到末尾,因为我没有空格,但这应该意味着它是youtube.com/search和youtube.com/search/ not视频作为另外两个列。
我试过使用以下代码,但仍然没有结果:
df %>% spread(url_link, outcome, -c(time_visited, outcome), fill = outcome)
本质上,尝试将变量url_link扩展到新变量中,并让来自结果变量的值填充它--同时在数据中保留结果变量。
注意:如果id与url_link值相关联,我将尝试创建0/1的标志,所以在google.com值的情况下,它只使用user_id == 1,因此有1标志--对youtube来说,它不是0标志。
发布于 2020-10-07 14:32:27
也许您可以在获得宽格式的数据之前创建一个outcome变量的副本:
library(dplyr)
library(tidyr)
df %>%
mutate(outcome1 = outcome) %>%
pivot_wider(names_from = url_link, values_from = outcome1, values_fill = 0)https://stackoverflow.com/questions/64246034
复制相似问题