删除全局环境中

时间:2017-11-03 12:15:56

标签: r

我有几百个.csv(here is a sample of 3 of these files)我想:

  1. 导入R
  2. 修剪为常用行长
  3. 提取特定列
  4. 合并为一个数据框,对象名称为列名。
  5. 在我的情况下,我可以使用以下方式获取文件:

    temp = list.files(pattern="*.csv")
    list2env(
    lapply(setNames(temp, make.names(gsub("*.csv$", "", temp))), 
    read.csv), envir = .GlobalEnv)} 
    

    但在尝试了一些不同的建议之后,我看不到如何将数据帧循环和修剪为每个25,000个观察值,并为每个提取“data.Activity”列。

    理想情况下,我最终会得到一个25,000个观察对象,以及来自所提供数据集的每个“data.Activity”变量,这些变量被命名为“Clinstag_XX”ID。

    非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

以下是一个例子:

foo <- data.frame(a = 1:3, data.Activity = runif(3))
bar <- data.frame(data.Activity = runif(5), b = letters[1:5])
rows <- 2:3
do.call(cbind, lapply(ls(pattern="foo|bar"), function(dfname) {
  setNames(get(dfname)[rows, "data.Activity", drop=F], dfname)
}))
# bar        foo
# 2 0.4387158 0.08075924
# 3 0.3078052 0.92174396

答案 1 :(得分:0)

您始终可以使用数据表并在for循环中执行每个操作。

类似的东西。

temp = list.files(path = 'data', pattern = "*.csv")


datatable <- read.csv(file = paste0("data/",temp[1])) %>% as.data.table()
datatable <- datatable[1:2500, names(datatable)[names(datatable)%like%"Activity|Date"], with = F]


for(file in temp[2:length(temp)]){
temp1 <- read.csv(file = paste0("data/",file)) %>% as.data.table()
temp11 <- temp1[1:2500, names(temp1)[names(temp1)%like%"Activity|Date"], with = F]
datatable <- rbind(datatable, temp11, fill = T)
}

您可以调整要提取的变量的行号。 注意:我已将csv文件放在名为data的文件夹中。