使用该行中其他列的向量填充数据框中的新列? R
Populate a new column in a data frame with a vector of other columns in that row? R
所以我有一个包含“A”、“B”、“C”、“D”列的数据框。
我想要一个包含 c(A,B,C,D) 的列 df$Vector。
例如,如果数据是这样的
Name A B C D
1 0.5 0.7 0.6 0.9
2. 0.4 0.8 0.3 0.1
3 0.5 0.9. 0.1 0.2
然后 df$Vector 会像
Name Vector
1 c(0.5,0.7,0.6,0.9)
2 c(0.4,0.8,0.3,0.1)
3 c(0.5,0.9,0.1,0.2)
我尝试使用 df$Vector <- list(c(df$A...df$D) 使列表包含所有值而不是与该行相关的值。任何人有任何想法?
可以这样做:
library(tidyr)
library(dplyr)
library(purrr)
nest(df, -Name) %>%
mutate(
data = map(data, unlist, use.names = F)
) %>%
rename(Vector = data)
你可以这样做:
df$Vector <- lapply(seq(nrow(df)), function(x) c(df[x,]))
df <- df[c(1, 6)]
哪个给你
df
#> Name Vector
#> 1 1 1.0, 0.5, 0.7, 0.6, 0.9
#> 2 2 2.0, 0.4, 0.8, 0.3, 0.1
#> 3 3 3.0, 0.5, 0.9, 0.1, 0.2
与 transpose()
来自 data.table
:
df$vector = as.list(data.table::transpose(df[-1]))
df[2:5] <- NULL
name vector
1 1 1.0, 0.5, 0.7, 0.6, 0.9
2 2 2.0, 0.4, 0.8, 0.3, 0.1
3 3 3.0, 0.5, 0.9, 0.1, 0.2
可重现的数据:
df = data.frame(
name = 1:3,
A = c(0.5, 0.4, 0.5), B = c(0.7, 0.8, 0.9),
C = c(0.6, 0.3, 0.1), D = c(0.9, 0.1, 0.2)
)
所以我有一个包含“A”、“B”、“C”、“D”列的数据框。
我想要一个包含 c(A,B,C,D) 的列 df$Vector。
例如,如果数据是这样的
Name A B C D
1 0.5 0.7 0.6 0.9
2. 0.4 0.8 0.3 0.1
3 0.5 0.9. 0.1 0.2
然后 df$Vector 会像
Name Vector
1 c(0.5,0.7,0.6,0.9)
2 c(0.4,0.8,0.3,0.1)
3 c(0.5,0.9,0.1,0.2)
我尝试使用 df$Vector <- list(c(df$A...df$D) 使列表包含所有值而不是与该行相关的值。任何人有任何想法?
可以这样做:
library(tidyr)
library(dplyr)
library(purrr)
nest(df, -Name) %>%
mutate(
data = map(data, unlist, use.names = F)
) %>%
rename(Vector = data)
你可以这样做:
df$Vector <- lapply(seq(nrow(df)), function(x) c(df[x,]))
df <- df[c(1, 6)]
哪个给你
df
#> Name Vector
#> 1 1 1.0, 0.5, 0.7, 0.6, 0.9
#> 2 2 2.0, 0.4, 0.8, 0.3, 0.1
#> 3 3 3.0, 0.5, 0.9, 0.1, 0.2
与 transpose()
来自 data.table
:
df$vector = as.list(data.table::transpose(df[-1]))
df[2:5] <- NULL
name vector
1 1 1.0, 0.5, 0.7, 0.6, 0.9
2 2 2.0, 0.4, 0.8, 0.3, 0.1
3 3 3.0, 0.5, 0.9, 0.1, 0.2
可重现的数据:
df = data.frame(
name = 1:3,
A = c(0.5, 0.4, 0.5), B = c(0.7, 0.8, 0.9),
C = c(0.6, 0.3, 0.1), D = c(0.9, 0.1, 0.2)
)