【发布时间】:2019-03-28 14:23:41
【问题描述】:
我有一个包含 37 个 Locations.csv 和 37 个 Behavior.csv 的工作目录
见下文,其中一些文件的编号与 111868-Behavior.csv 和 111868-Behavior 2.csv 相同,Locations.csv 也是如此
#here some of the csv in the work directory
dir()
[1] "111868-Behavior 2.csv" "111868-Behavior.csv"
[3] "111868-Locations 2.csv" "111868-Locations.csv"
[5] "111869-Behavior.csv" "111869-Locations.csv"
[7] "111870-Behavior 2.csv" "111870-Behavior.csv"
[9] "111870-Locations 2.csv" "111870-Locations.csv"
[11] "112696-Behavior 2.csv" "112696-Behavior.csv"
[13] "112696-Locations 2.csv" "112696-Locations.csv"
我无法更改文件名。
我想导入所有 36 个位置和 36 个行为,但是当我尝试这样做时
#Create list of all behaviors
bhv <- list.files(pattern="*-Behavior.csv")
bhv2 <- list.files(pattern="*-Behavior 2.csv")
#Throw them altogether
bhv_csv = ldply(bhv, read_csv)
bhv_csv2 = ldply(bhv2, read_csv)
#Join bhv_csv and bhv_csv2
b<-rbind(bhv_csv,bhv_csv2)
#Create list of all locations
loc <- list.files(pattern="*-Locations.csv")
loc2 <- list.files(pattern="*-Locations 2.csv")
#Throw them altogether
loc_csv = ldply(loc, read_csv)
loc_csv2 = ldply(loc2, read_csv)
#Join loc_csv and loc_csv2
l<-rbind(loc_csv,loc_csv2)
只显示 28 个,而不是我想象的 36 个
length(unique(b$Ptt))
[1] 28
length(unique(l$Ptt))
[1] 28
这个数字28,大约是所有Behaviors.csv和Locations.csv,没有Behaviors 2.csv和Locations 2.csv(数字为“2”的总共8个)
我想以显示 36 个行为和位置的方式导入所有文件行为和所有位置。我该怎么做?
【问题讨论】:
-
为什么
Behavior需要两个单独的list.files?你可以list.files(pattern="Behavior")吗?它应该涵盖两种模式,然后对于Locations相同? -
我现在做了这个,在列表中创建了 36 个节目,但是当我运行
length(unique(b$Ptt))shows me only 28... -
我不知道
Ptt列有什么,但因为您想要两个不同的数据框用于“行为”和“模式”。尝试这样做,b <- rbindlist(lapply(list.files(pattern="Behavior", full.names = TRUE),fread))并确保已加载data.table,因为fread和rbindlist来自data.table。 -
Ptt 列显示每个行为或位置的编号,例如
111868或111869(每个数字是一种动物111868-Behavior 2.csv和111868-Behavior.csv是2 种动物,例如),是 36 个数字,但只显示 26。我试过你告诉我的这段代码,但结果是一样的