将具有相同值的两列与第三列合并
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 我们想要的列。
我正在尝试以一种我可以利用的方式构建我的情感列表。
我有一个数据框,其结构如下:
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 我们想要的列。