使用R将两列的内容合并为一列
Combine the contents of two columns into one column using R
我得到了一些这样的数据
structure(list(id = c(1, 1, 1), time1 = c(10, 20, 30), time2 = c(15, 25, 35)), row.names = c(NA, 3L), class = "data.frame")
我想从上述数据的两列中创建一个列
structure(list(id = c(1, 1, 1, 1, 1, 1), time = c(10, 15, 20, 25, 30, 35)), row.names = c(NA, 6L), class = "data.frame")
我认为这与转换为长格式不同,因为我不希望 gather() 产生两列,其中一列是所用列的名称,一列是值。
我们可以使用 pivot_longer
这应该更通用,因为它也可以根据其他模式和多列进行整形。请注意,pivot_longer
继承了 reshape2
功能 melt
,具有更多增强功能和错误修复
library(dplyr)
library(tidyr)
pivot_longer(df1, cols = time1:time2, values_to = 'time') %>%
select(-name)
-输出
# A tibble: 6 x 2
# id time
# <dbl> <dbl>
#1 1 10
#2 1 15
#3 1 20
#4 1 25
#5 1 30
#6 1 35
或使用 base R
和 stack
transform(stack(df1[-1])[1], id = rep(df1$id, 2))[2:1]
或者可以使用 data.frame
和 unlist
data.frame(id = df1$id, value = unlist(df1[-1], use.names = FALSE))
tidyr
的替代方案,虽然这是一个很好的方法:
reshape2::melt(dat, "id")[,-2]
# id value
# 1 1 10
# 2 1 20
# 3 1 30
# 4 1 15
# 5 1 25
# 6 1 35
(通常它包含旋转列名称作为列本身,因此 [,-2]
将其删除,因为您的预期输出没有它。您可以只 melt(.)
如果您 want/need 保留它。)
我得到了一些这样的数据
structure(list(id = c(1, 1, 1), time1 = c(10, 20, 30), time2 = c(15, 25, 35)), row.names = c(NA, 3L), class = "data.frame")
我想从上述数据的两列中创建一个列
structure(list(id = c(1, 1, 1, 1, 1, 1), time = c(10, 15, 20, 25, 30, 35)), row.names = c(NA, 6L), class = "data.frame")
我认为这与转换为长格式不同,因为我不希望 gather() 产生两列,其中一列是所用列的名称,一列是值。
我们可以使用 pivot_longer
这应该更通用,因为它也可以根据其他模式和多列进行整形。请注意,pivot_longer
继承了 reshape2
功能 melt
,具有更多增强功能和错误修复
library(dplyr)
library(tidyr)
pivot_longer(df1, cols = time1:time2, values_to = 'time') %>%
select(-name)
-输出
# A tibble: 6 x 2
# id time
# <dbl> <dbl>
#1 1 10
#2 1 15
#3 1 20
#4 1 25
#5 1 30
#6 1 35
或使用 base R
和 stack
transform(stack(df1[-1])[1], id = rep(df1$id, 2))[2:1]
或者可以使用 data.frame
和 unlist
data.frame(id = df1$id, value = unlist(df1[-1], use.names = FALSE))
tidyr
的替代方案,虽然这是一个很好的方法:
reshape2::melt(dat, "id")[,-2]
# id value
# 1 1 10
# 2 1 20
# 3 1 30
# 4 1 15
# 5 1 25
# 6 1 35
(通常它包含旋转列名称作为列本身,因此 [,-2]
将其删除,因为您的预期输出没有它。您可以只 melt(.)
如果您 want/need 保留它。)