首页 > 解决方案 > R中的多行到多列数据框中,不同的第一列作为列标题

问题描述

我是 R 新手,我想将 R 中的多行转换为多列数据框,并将不同的第一列作为列标题

例如:

> dat <- read.table(text = "Company    Loc 100000012,104 100000012,105
> 100000012,107 
> 100000012,102 
> 100000012,166 
> 100000012,126 
> 100000012,169
> 100000012,42 
> 100000012,43 
> 100123545,50 
> 100123600,21 
> 100123600,10",
> header = TRUE)

转换为以下

> 100000012,100123545,100123600 
> 104,50,21 
> 105,,10 
> 107,, 
> 102,, 
> 166,,
> 126,, 
> 169,, 
> 42,, 
> 43,,

非常感谢!

标签: rdataframetransform

解决方案


这是一种tidyverse方法:

dat %>%
  mutate(rn = row_number()) %>%
  pivot_wider(id_cols = c(Company, rn), names_from = Company, values_from = Loc) %>%
  as.data.frame() %>%
  select(-rn) %>%
  mutate_all(~(.[order(is.na(.))])) %>%
  filter_all(any_vars(!is.na(.))) %>%
  unite(result, everything(), sep = ',')

输出

     result
1 104,50,21
2 105,NA,10
3 107,NA,NA
4 102,NA,NA
5 166,NA,NA
6 126,NA,NA
7 169,NA,NA
8  42,NA,NA
9  43,NA,NA

推荐阅读