gpt4 book ai didi

R通过添加行创建一个data.frame,每次一个

转载 作者:行者123 更新时间:2023-12-04 18:01:27 24 4
gpt4 key购买 nike

我正在尝试逐行(每次一条记录)填充一个 data.frame(或类似的东西)。我的问题:

  1. 数据并不总是存在,我不想丢失列,因为它们没有一个数据实例。我想在这个地方设置 NA。
  2. 新列可能会出现在流程中间,而其他列可能不再可用。

我想做的是构建一个包含一行的 data.frame 并插入向量。

例子:

ddf <- data.frame("1", "2", "3", "4", stringsAsFactors = FALSE)
colnames(ddf) <- c("A","B","C","D")
View(ddf)
data_vector1 <- c("11","22","44")
names(data_vector1) <- c("A","B","D")
data_vector2 <- c("111","222","555")
names(data_vector2) <- c("A","B","E")

#What I want:
# A B C D E
# 1 2 3 4 NA
# 11 22 NA 44 NA
# 111 222 NA NA 555

#Still now
samecols <- intersect(colnames(ddf),names(data_vector1))
ddf <- rbind(ddf, data_vector1[samecols])

#I'm getting:
#A B C D
#1 2 3 4
#11 22 44 11

最佳答案

我们可以将数据集放在 list 中,转换为 data.frame 并使用 rbindlistfill=TRUE

library(data.table)
lst <- lapply(list(ddf, data_vector1, data_vector2), as.data.frame.list)
rbindlist(lst, fill=TRUE)
# A B C D E
#1: 1 2 3 4 NA
#2: 11 22 NA 44 NA
#3: 111 222 NA NA 555

或者使用 dplyr 中的 bind_rows

library(dplyr)
bind_rows(lst)

关于R通过添加行创建一个data.frame,每次一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34727330/

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