gpt4 book ai didi

r - 将作为年份的文件名的列名添加到数据框中

转载 作者:行者123 更新时间:2023-12-04 12:32:16 32 4
gpt4 key购买 nike

我是 R 的新手。我在本地 PC 上的一个目录中有多个文件。我已将它们导入 R 并添加如下列名。现在我需要将年份添加到与文件名对应的每个数据框中。例如,第一个文件称为 1950 年,第二个 1951 年,依此类推。如何在 R 中使用这些值将年份添加为列名?

The output is below
Name Sex Number
1 Linda F 10
2 Mary F 100
3 Patrick M 200
4 Barbara F 300
5 Susan F 500
6 Richard M 900
7 Deborah F 500
8 Sandra F 23
9 Conor M 15
10 Conor F 120

我需要在开头的另一列是该文件的年份吗?

这是我生成上述内容的代码。
ldf <- list() # creates a list
listtxt <- dir(pattern = "*.txt") # creates the list of all the txt files in the directory
#Year = 1950
for (k in 1:length(listtxt)) #1:4 4 is the length of the list
{
ldf[[k]] <- read.table(listtxt[k],header=F,sep=",")
colnames(ldf[[k]]) = c('Name', 'Sex', 'Number')
#test = cbind(ldf[[k]], Year )

}

我需要年份为每个文件增加 1 并将其添加为具有值的列?
任何帮助将不胜感激。

最佳答案

您可以通过直接从文件名中获取年份来添加带有年份的列。我也用过 lapply而不是循环遍历每个文件。

在下面的代码中,该函数读取单个文件并添加包含该文件年份的列。由于您的文件名在名称中包含年份,因此您只需使用 substr 从文件名中获取年份即可。 . lapply将该函数应用于 listtxt 中的每个文件名,产生一个列表,其中每个元素都是一个数据框。那你只要rbind将所有列表元素合并到一个数据框中。

ldf = lapply(listtxt, function(x) {

dat = read.table(x, header=FALSE, sep=",")

# Add column names
names(dat) = c('Name', 'Sex', 'Number')

# Add a column with the year
dat$Year = substr(x,1,4)

return(dat)
})

# Combine all the individual data frames into a single data frame
df = do.call("rbind", ldf)

而不是 do.call("rbind", ldf)您也可以使用 rbind_all来自 dplyr包,如下:
library(dplyr)
df = rbind_all(ldf)

关于r - 将作为年份的文件名的列名添加到数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26343349/

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