如何在 R 中组合多个列
How to combine multiple columns in R
假设我有这个数据集:
age height weight
"1/2/3" "12/15/18" "30/40/37"
我怎样才能拥有像下面这样的数据集?
age height weight
1 12 30
2 15 40
3 18 37
如果我的数据集是这样的呢:
name age height weight
"Jack" "1/2/3" "12/15/18" "30/40/37"
我想要一个如下的数据集:
name age height weight
"Jack" 1 12 30
"Jack" 2 15 40
"Jack" 3 18 37
我该怎么做?
如果您的数据采用如下数据帧格式:
df <- data.frame(age = '1/2/3', height = '12/15/18', weight = '30/40/37')
df
#> age height weight
#> 1 1/2/3 12/15/18 30/40/37
你可以
as.data.frame(lapply(df, function(x) as.numeric(unlist(strsplit(x, '/')))))
#> age height weight
#> 1 1 12 30
#> 2 2 15 40
#> 3 3 18 37
如果您的数据是命名向量,同样的代码也可以工作(从问题中不清楚您的数据是什么格式,但只要您的数据被调用,上面的代码在任何一种情况下都应该工作 df
)
由 reprex package (v2.0.1)
于 2022-04-10 创建
如果您不介意使用外部包,可以使用 tidyr
包中的 separate_rows()
。
library(tidyverse)
df %>% separate_rows(-name, sep = "/")
# A tibble: 3 × 4
name age height weight
<chr> <chr> <chr> <chr>
1 Jack 1 12 30
2 Jack 2 15 40
3 Jack 3 18 37
假设我有这个数据集:
age height weight
"1/2/3" "12/15/18" "30/40/37"
我怎样才能拥有像下面这样的数据集?
age height weight
1 12 30
2 15 40
3 18 37
如果我的数据集是这样的呢:
name age height weight
"Jack" "1/2/3" "12/15/18" "30/40/37"
我想要一个如下的数据集:
name age height weight
"Jack" 1 12 30
"Jack" 2 15 40
"Jack" 3 18 37
我该怎么做?
如果您的数据采用如下数据帧格式:
df <- data.frame(age = '1/2/3', height = '12/15/18', weight = '30/40/37')
df
#> age height weight
#> 1 1/2/3 12/15/18 30/40/37
你可以
as.data.frame(lapply(df, function(x) as.numeric(unlist(strsplit(x, '/')))))
#> age height weight
#> 1 1 12 30
#> 2 2 15 40
#> 3 3 18 37
如果您的数据是命名向量,同样的代码也可以工作(从问题中不清楚您的数据是什么格式,但只要您的数据被调用,上面的代码在任何一种情况下都应该工作 df
)
由 reprex package (v2.0.1)
于 2022-04-10 创建如果您不介意使用外部包,可以使用 tidyr
包中的 separate_rows()
。
library(tidyverse)
df %>% separate_rows(-name, sep = "/")
# A tibble: 3 × 4
name age height weight
<chr> <chr> <chr> <chr>
1 Jack 1 12 30
2 Jack 2 15 40
3 Jack 3 18 37