从R中的两个不同列创建两个新列?

  • 本文关键字:两个 创建 新列 r dplyr
  • 更新时间 :
  • 英文 :


我有一个df在这种格式中,我有不同关联数据(fieldID)和值(value)的相同项。

2019 - 03 - 00标题22020年5月26日

将值1重新编码为'Title', 6重新编码为'Date',并将数据转换为宽幅格式。

library(dplyr)
library(tidyr)
df %>%
mutate(fieldID = recode(fieldID, '1' = 'Title', '6' = 'Date')) %>%
pivot_wider(names_from = fieldID, values_from = value)
#  itemID Title   Date          
#   <int> <chr>   <chr>         
#1      1 Title   2019 - 03 - 00
#2      2 Title 2 May 26, 2020  
#3      3 Title 3 March 2019    

df <- structure(list(itemID = c(1L, 1L, 2L, 2L, 3L, 3L), fieldID = c(1L, 
6L, 1L, 6L, 1L, 6L), value = c("Title", "2019 - 03 - 00", "Title 2", 
"May 26, 2020", "Title 3", "March 2019")), 
row.names = c(NA, -6L), class = "data.frame")

可以吗?

library(dplyr)
df %>% select(-fieldID) %>% filter(row_number()%%2 == 0 ) %>% inner_join(
df %>% select(-fieldID) %>% filter(row_number()%%2 != 0 ), by = 'itemID'
) %>% select(itemID, 'Date' = value.x, 'Title' = value.y)
# A tibble: 3 x 3
itemID Date           Title  
<dbl> <chr>          <chr>  
1      1 2019 - 03 - 00 Title  
2      2 May 26, 2020   Title 2
3      3 March 2019     Title 3

数据使用:

df
# A tibble: 6 x 3
itemID fieldID value         
<dbl>   <dbl> <chr>         
1      1       1 Title         
2      1       6 2019 - 03 - 00
3      2       1 Title 2       
4      2       6 May 26, 2020  
5      3       1 Title 3       
6      3       6 March 2019    

最新更新