所以我每周都有大量的CSV文件放入文件夹,并且每周都有文件名和CSV文件更改次数。格式是一致的,我需要做的操作是一致的,但是输入是动态的。每个CSV本质上都是一个数据表,具有一个用户的唯一ID,一个电子邮件地址和一个二进制1/0(代表这些用户完成的操作)。请记住,我是R的新手,所以大多数时候我一直在这里找答案
基本上,我希望能够从此文件夹中上传所有CSV,然后动态引用这些表并每次对它们执行统一的操作。无论有4个表还是40个表,我都需要执行相同的操作。
需要执行的一项操作是从每个表中删除“ Id”列。稍后,我将使用电子邮件连接到表,并且ID列无用,因此删除列更容易。所有这些CSV都包含“ Id”列,因此从本质上讲,我只需要从所有表中删除ID。
这里是快速预览,也是我一直尝试的手动方式。
#sample CSV with long file name '2018_October_10_regional_users_action_x'
ID email address action x
1 365367 joe.schmoe@email.com 1
2 953164 fake.guy@email.com 0
#sample CSV with long file name '2018_October_10_regional_users_action_z'
ID email addresss action z
1 798842 Jill.fake@email.com 0
2 100321 madeup.j@email.com 1
#code I've been using
setwd(choose.dir())
temp <- list.files(pattern = "\\.csv" # picking all the csv's from my folder
#I was inserting these all as separate objects, since that's the way I know
# how to do what I need, but super manual
#list2env(
lapply(setNames(temp, make.names(gsub("*.csv$", "", temp))),
read_csv), envir = .GlobalEnv)
# Manual way I was dropping my column
2018_October_10_regional_users_action_x <- select(2018_October_10_regional_users_action_x, -Id)
2018_October_10_regional_users_action_z <- select(2018_October_10_regional_users_action_z, -Id)
我正在做其他一些事情,但是它们与本专栏的内容都相当简单和相似。因此,如果我能弄清楚如何做到这一点,则可以在其余的代码中应用它。
我尝试使用get和mget将它们放入列表中,然后构建一个函数或for循环,因为手动获取对象名称(通常很长)并一次构建一个这些函数是不可扩展的。 / p>
任何人都知道一种方法:1)动态引用表我输入的内容,2)动态引用函数或公式中的表来完成一些基本操作,类似于我上面引用的列删除?