例如,我有一个有关以下三个国家/地区电视节目收视率的数据框。我想将此数据帧转换为多列数据帧,并以第二列中的值作为列标题。
Ratings Countries
102.71 Austria
103.21 Austria
....
103.87 Belgium
...
转换后:
Austria Belgium Canada
102.71 103.87 470.49
103.21 106.06 483.52
109.86 114.1 492.41
194.1 119.98 498.56
我知道我可以使用unstack()函数来实现。但是,unstack()的假设是每一列都有相同的行数。我的问题是,如果不同国家/地区的评分数量不同,该怎么办?这样,我希望NA填补空缺。例如,
Ratings Countries
102.71 Austria
103.21 Austria
103.87 Belgium
转换后:
Austria Belgium
102.71 103.87
103.21 NA
我不确定如何将NA插入到我的转换中。谢谢!
答案 0 :(得分:1)
我建议使用tidyverse
方法:
library(tidyverse)
df %>% group_by(Countries) %>% mutate(id=1:n()) %>%
pivot_wider(names_from = Countries, values_from=Ratings) %>%
select(-id)
输出:
# A tibble: 2 x 2
Austria Belgium
<dbl> <dbl>
1 103. 104.
2 103. NA
使用了一些数据:
df <- structure(list(Ratings = c(102.71, 103.21, 103.87), Countries = c("Austria",
"Austria", "Belgium")), class = "data.frame", row.names = c(NA,
-3L))