gpt4 book ai didi

r - 有没有办法将数据框的列与完整列名的向量相匹配?

转载 作者:行者123 更新时间:2023-12-05 08:45:17 26 4
gpt4 key购买 nike

我有一个列名向量(其中 262 个)和一个具有相同列名但缺少几列的数据框(因此我有 250 列而不是 262 列)。

有没有办法将数据框的列设置为包含完整列名称集的向量,并为没有数据的名称生成一列 NA?

例如,如果我有一个向量和数据框,如下所示:

column_names <- c("col1","col2","col3","col4","col5","col6","col7")

df1 <- data.frame(c(20,30,10,20,45),c(1,10,2,45,2),c(9,10,22,11,12),c(87,7,7,7,14),c(89,90,99,12,1))
names(df1) <-c("col1","col2","col3","col5","col6")

# col1 col2 col3 col5 col6
# 20 1 9 87 89
# 30 10 10 7 90
# 10 2 22 7 99
# 20 45 11 7 12
# 45 2 12 14 1

我想生成一个看起来像这样的:

df2 <- data.frame(c(20,30,10,20,45),c(1,10,2,45,2),c(9,10,22,11,12),c("NA","NA","NA","NA","NA"),c(87,7,7,7,14),c(89,90,99,12,1),c("NA","NA","NA","NA","NA"))
names(df2) <-column_names

# col1 col2 col3 col4 col5 col6 col7
# 20 1 9 NA 87 89 NA
# 30 10 10 NA 7 90 NA
# 10 2 22 NA 7 99 NA
# 20 45 11 NA 7 12 NA
# 45 2 12 NA 14 1 NA

最佳答案

您可以使用 setdiff 获取缺失的列名,然后添加新列。

column_names <- c("col1","col2","col3","col4","col5","col6","col7")

df <- data.frame(col1 = c(20,30,10,20,45),col2=c(1,10,2,45,2),col4=c(9,10,22,11,12),col5=c(87,7,7,7,14),col6=c(89,90,99,12,1))serdi(colnames(df),column_names)

missing_cols <- setdiff(column_names,colnames(df))
df[missing_cols] <- NA

df <- df[column_names]

df
  col1 col2 col3 col4 col5 col6 col7
1 20 1 NA 9 87 89 NA
2 30 10 NA 10 7 90 NA
3 10 2 NA 22 7 99 NA
4 20 45 NA 11 7 12 NA
5 45 2 NA 12 14 1. NA

关于r - 有没有办法将数据框的列与完整列名的向量相匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73146356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com