将具有相同值的两列与第三列合并

Combine two columns sharing the same values with a third column

我正在尝试以一种我可以利用的方式构建我的情感列表。

我有一个数据框,其结构如下:

df <- data.frame("vehicle" = c("car", "plane", "bicycle", "helicopter", "train"),
                 "Value" = c(0.5, 0.2, 0.1, -1, -0.7),
                 "type" = c("toyota, mercedes, whatever", "Airbus, Boeing", 
                            "Mountain bike", "NA", "TGV, ICE"))

我希望将 "type" 的值与它们的值一起添加到 "vehicle" 列,以获得这样的数据框:

dfdesired <- data.frame("vehicle" = c("car", "toyota", "mercedes", "whatever", "plane", "Airbus", 
                                      "Boeing", "bicycle", "Mountain bike", "helicopter", "train", "TGV", "ICE"),
                        "Value" =c(0.5, 0.5, 0.5, 0.5, 0.2, 0.2, 0.2, 0.1, 0.1, -1, -0.7, -0.7, -0.7))

目前有没有人遇到过类似的问题?

非常感谢!

使用 tidyr 你可以这样做:

library(dplyr)
library(tidyr)
df  %>% mutate (type2 = strsplit(paste0(vehicle,", ",type),", ")) %>%
  unnest(type2) %>%
  select(vehicle = type2, Value)

         vehicle Value
1            car   0.5
2         toyota   0.5
3       mercedes   0.5
4       whatever   0.5
5          plane   0.2
6         Airbus   0.2
7         Boeing   0.2
8        bicycle   0.1
9  Mountain bike   0.1
10    helicopter  -1.0
11         train  -0.7
12           TGV  -0.7
13           ICE  -0.7

所以首先我们将 vehicle 添加到 type 字符串,然后我们将字符串拆分为 list。此时我们有一个 data.frame 包含一列列表,我们使用 unnest 按列表项获取一行,然后 select 我们想要的列。