这个是一个很好的。我已经试图解决这个问题一段时间了,但我一直在撞墙。所以,我以科学的名义来寻找这个。
简介
我在目录中有大约93个具有唯一名称的文件。我使用r将这些文件读入列表。
files.measurements <- as.character(list.files(path = "~/measurements/", full.names = TRUE))
所以,这样做只是找到目录中所有文件的名称。所有这些文件都是.csv
。给我带来了很多麻烦。
measurements.filenames <- gsub(".csv", "", basename(files.measurements))
读取这些文件的原因是每个文件名代表测量的名称。文件中的相同项目可能存在也可能不存在于多个文件中。
例如
有5个文件名,即NameA
,NameB
,NameC
,NameD
,NameE
。每个文件有8个列名:id,name,sex,dob,...,measurement。 (每个文件名的名称相同)
当然,id是唯一的,但如果NameB
中存在,则NameA
可能存在也可能不存在。
需要
所以,我需要做的是将这93个文件合并到一个数据框中,使数据框包含id
,name
,sex
,dob
,......例如,measurement
文件的名称 - NameA
。对于相同的ID,该值应该相同,如果ID不存在,rbind
到具有附加列的数据框,否则如果id存在,只需将measurement
添加到具有新列名称的列 - NameB
。
修改
DATA 的
NameA
id gender dob status date measurement
1 F 5/24/1942 Rpt 1/12/2018 2.9
2 F 12/1/2017 Rpt 1/12/2018 0.622
3 M 11/15/1957 Rpt 1/11/2018 3.6
4 M 5/17/1947 Rpt 1/11/2018 3.5
5 F 7/17/1955 Rpt 1/11/2018 2.7
NameB
id gender dob status date measurement
1 F 5/24/1942 Rpt 1/12/2018 3.5
2 F 12/1/2017 Rpt 1/12/2018 2.5
8 M 11/15/1957 Rpt 1/11/2018 1.9
10 M 5/17/1947 Rpt 1/11/2018 0.8
11 F 7/17/1955 Rpt 1/11/2018 1.2
解释
因此,如您所见,两个表中的所有列都相同,但最后一次测量是不同的。请暂时忽略gender
,dob
,status
和date
列。让我们关注id
和measurement
。如您所见,1
和2
两个表中都有NameA
和NameB
。如果是这种情况,那么NameB
的衡量标准应该添加到measurement
的{{1}}旁边的数据框中,并带有名称(例如NameB
)。并且对于名称B NameB-measurement
中NameA
should be added as new row with
测量中from
不存在的所有内容as blank but
添加了NameA 9463216549
6541335466
6749746326
6546879994
NameB-measurement`。
我知道这很复杂,但这就是研究人员如何向我提供数据。我需要以某种方式清理它。
答案 0 :(得分:7)
尝试以下方法:
nls