如何将来自多个csv文件的特定部分名称的变量组合到一个数据框中

时间:2018-03-14 21:47:17

标签: r dplyr tidyr data-cleaning

我正在尝试对来自不同教师的多个课程的教学评估进行一些分析。每个学生的评估都存储为.csv文件(尽管它们是以制表符分隔的)。

我将csv文件合并到一个数据框中的常用方法不会起作用,因为每个文件的列数不同,并且列名中包含教师的名称。因此,名称和维度之间存在不匹配。我跳过第一行并将标题设置为FALSE,但不同的列数仍然会引发错误。

因此,我将每个.csv文件读入其自己的数据框,其名称与文件名相同:

for(i in file_names){
        assign(i, read.csv(i, sep="\t", fileEncoding = "utf-16"))
}

有没有办法在循环中使用dplyr来跨越所有数据帧的名称中的特定文本的列(第一轮50个数据帧)?

具体来说,我想提取Created.At变量和包含..."Over.all.rating.for.teacher"的变量。

编辑以添加样本数据:

Data1 <- dput(Data1)
structure(list(Created.At = structure(c(3L, 4L, 5L, 6L, 7L, 8L, 
9L, 1L, 2L, 10L), .Label = c("2016/01/19 10:16:08 PM", "2016/01/19 11:08:58 PM", 
"2016/01/19 3:36:24 PM", "2016/01/19 4:06:32 PM", "2016/01/19 4:08:52 PM", 
"2016/01/19 4:40:26 PM", "2016/01/19 6:38:57 PM", "2016/01/19 8:18:20 PM", 
"2016/01/19 8:58:38 PM", "2016/01/20 8:16:28 PM"), class = "factor"), 
    Please.rate.teacher..John.Doe...Skills.of.interaction.and.rapport.with.learners = c(4L, 
    5L, 4L, NA, 4L, 5L, 5L, 4L, 4L, 3L), Please.rate.teacher..John.Doe...Clearly.communicated.goals.outcomes.for.the.session = c(4L, 
    5L, 4L, NA, 4L, 5L, 4L, 5L, 4L, 4L), Please.rate.teacher..John.Doe...Knowledge.of.subject.was.clearly.demonstrated = c(5L, 
    5L, 4L, NA, 4L, 5L, 5L, 5L, 4L, 3L), Please.rate.teacher..John.Doe...Conveys.the.significance.of.the.information = c(4L, 
    5L, 3L, NA, 4L, 5L, 5L, 4L, 4L, 3L), Please.rate.teacher..John.Doe...Class.preparation.materials....referred.to.or.used = c(NA, 
    NA, 4L, 5L, 4L, 5L, 5L, NA, 4L, 2L), Please.rate.teacher..John.Doe...Teaching.methods.facilitated.achievement.of.goals.for.session = c(4L, 
    5L, 4L, NA, 4L, 5L, 5L, 5L, 5L, 3L), Please.rate.teacher..John.Doe...Uses.time.effectively = c(5L, 
    5L, 4L, NA, 4L, 4L, 4L, 5L, 3L, 3L), Please.rate.teacher..John.Doe...Compared.to.other.teachers..this.one.is... = c(4L, 
    5L, 4L, NA, 4L, 5L, 5L, 4L, 4L, 4L), Please.rate.teacher..John.Doe...Over.all.rating.for.teacher = c(4L, 
    5L, 4L, 5L, 4L, 5L, 5L, 4L, 4L, 4L), Please.rate.teacher..Jane.Doe....Skills.of.interaction.and.rapport.with.learners = c(4L, 
    4L, 4L, 5L, 4L, 5L, 5L, 4L, 5L, 3L), Please.rate.teacher..Jane.Doe...Clearly.communicated.goals.outcomes.for.the.session = c(4L, 
    5L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 3L), Please.rate.teacher..Jane.Doe....Knowledge.of.subject.was.clearly.demonstrated = c(4L, 
    4L, 3L, 4L, 4L, 5L, 5L, 4L, 5L, 4L), Please.rate.teacher..Jane.Doe....Conveys.the.significance.of.the.information = c(4L, 
    4L, 4L, 4L, 4L, 5L, 5L, 4L, 5L, 3L), Please.rate.teacher..Jane.Doe....Class.preparation.materials....referred.to.or.used = c(NA, 
    NA, 4L, NA, 4L, 5L, 5L, NA, 5L, 2L), Please.rate.teacher..Jane.Doe....Teaching.methods.facilitated.achievement.of.goals.for.session = c(4L, 
    5L, 4L, 5L, 4L, 5L, 4L, 5L, 5L, 3L), Please.rate.teacher..Jane.Doe....Uses.time.effectively = c(4L, 
    5L, 4L, 5L, 4L, 5L, 5L, 5L, 5L, 3L), Please.rate.teacher..Jane.Doe...Compared.to.other.teachers..this.one.is... = c(4L, 
    4L, 4L, 4L, 4L, 5L, 4L, 4L, 4L, 3L), Please.rate.teacher..Jane.Doe....Over.all.rating.for.teacher = c(4L, 
    4L, 4L, 4L, 4L, 5L, 5L, 4L, 4L, 3L), Please.rate.teacher..Sue.Smith....Skills.of.interaction.and.rapport.with.learners = c(4L, 
    4L, 4L, 5L, 4L, 4L, 5L, 4L, 4L, 2L), Please.rate.teacher..Sue.Smith....Clearly.communicated.goals.outcomes.for.the.session = c(4L, 
    4L, 4L, 5L, 4L, 5L, 5L, 5L, 4L, 2L), Please.rate.teacher..Sue.Smith....Knowledge.of.subject.was.clearly.demonstrated = c(4L, 
    3L, 4L, 5L, 4L, NA, 5L, 4L, 4L, 2L), Please.rate.teacher..Sue.Smith....Conveys.the.significance.of.the.information = c(3L, 
    4L, 4L, 4L, 4L, NA, 5L, 4L, 3L, 2L), Please.rate.teacher..Sue.Smith....Class.preparation.materials....referred.to.or.used = c(NA, 
    NA, 4L, 4L, 4L, NA, 5L, NA, 4L, 2L), Please.rate.teacher..Sue.Smith....Teaching.methods.facilitated.achievement.of.goals.for.session = c(4L, 
    4L, 4L, 5L, 4L, NA, 5L, 4L, 5L, 2L), Please.rate.teacher..Sue.Smith....Uses.time.effectively = c(3L, 
    4L, 4L, 5L, 4L, NA, 5L, 5L, 4L, 2L), Please.rate.teacher..Sue.Smith....Compared.to.other.teachers..this.one.is... = c(4L, 
    3L, 4L, 5L, 4L, 4L, 5L, 4L, 4L, 3L), Please.rate.teacher..Sue.Smith....Over.all.rating.for.teacher = c(NA, 
    3L, 4L, 5L, 4L, 5L, 5L, 4L, 4L, 2L), Please.rate.the.following.....I.feel.that.I.achieved.the.learning.objectives.for.today.s.sessions = c(4L, 
    5L, 4L, 5L, 4L, 5L, 5L, 5L, 5L, 4L), Please.rate.the.following.....The.session.promoted.ideas.for.dissemination.of.concepts.in.my.home.department.or.other.areas = c(3L, 
    5L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 4L), Please.rate.the.following.....I.feel.prepared.to.disseminate.these.ideas.concepts.in.my.home.department = c(3L, 
    4L, 4L, 5L, 3L, 5L, 3L, 4L, 4L, 2L), Please.rate.the.following.....I.can.see.myself.making.use.of.handouts.and.follow.up.material.references.that.were.provided.in.class.today = c(NA, 
    4L, 4L, 4L, 3L, 5L, 3L, NA, 5L, 2L), Overall.I.found.this.session.to.be... = c(4L, 
    5L, 4L, 5L, 4L, 5L, 5L, 5L, 5L, 3L)), .Names = c("Created.At", 
"Please.rate.teacher..John.Doe...Skills.of.interaction.and.rapport.with.learners", 
"Please.rate.teacher..John.Doe...Clearly.communicated.goals.outcomes.for.the.session", 
"Please.rate.teacher..John.Doe...Knowledge.of.subject.was.clearly.demonstrated", 
"Please.rate.teacher..John.Doe...Conveys.the.significance.of.the.information", 
"Please.rate.teacher..John.Doe...Class.preparation.materials....referred.to.or.used", 
"Please.rate.teacher..John.Doe...Teaching.methods.facilitated.achievement.of.goals.for.session", 
"Please.rate.teacher..John.Doe...Uses.time.effectively", "Please.rate.teacher..John.Doe...Compared.to.other.teachers..this.one.is...", 
"Please.rate.teacher..John.Doe...Over.all.rating.for.teacher", 
"Please.rate.teacher..Jane.Doe....Skills.of.interaction.and.rapport.with.learners", 
"Please.rate.teacher..Jane.Doe...Clearly.communicated.goals.outcomes.for.the.session", 
"Please.rate.teacher..Jane.Doe....Knowledge.of.subject.was.clearly.demonstrated", 
"Please.rate.teacher..Jane.Doe....Conveys.the.significance.of.the.information", 
"Please.rate.teacher..Jane.Doe....Class.preparation.materials....referred.to.or.used", 
"Please.rate.teacher..Jane.Doe....Teaching.methods.facilitated.achievement.of.goals.for.session", 
"Please.rate.teacher..Jane.Doe....Uses.time.effectively", "Please.rate.teacher..Jane.Doe...Compared.to.other.teachers..this.one.is...", 
"Please.rate.teacher..Jane.Doe....Over.all.rating.for.teacher", 
"Please.rate.teacher..Sue.Smith....Skills.of.interaction.and.rapport.with.learners", 
"Please.rate.teacher..Sue.Smith....Clearly.communicated.goals.outcomes.for.the.session", 
"Please.rate.teacher..Sue.Smith....Knowledge.of.subject.was.clearly.demonstrated", 
"Please.rate.teacher..Sue.Smith....Conveys.the.significance.of.the.information", 
"Please.rate.teacher..Sue.Smith....Class.preparation.materials....referred.to.or.used", 
"Please.rate.teacher..Sue.Smith....Teaching.methods.facilitated.achievement.of.goals.for.session", 
"Please.rate.teacher..Sue.Smith....Uses.time.effectively", "Please.rate.teacher..Sue.Smith....Compared.to.other.teachers..this.one.is...", 
"Please.rate.teacher..Sue.Smith....Over.all.rating.for.teacher", 
"Please.rate.the.following.....I.feel.that.I.achieved.the.learning.objectives.for.today.s.sessions", 
"Please.rate.the.following.....The.session.promoted.ideas.for.dissemination.of.concepts.in.my.home.department.or.other.areas", 
"Please.rate.the.following.....I.feel.prepared.to.disseminate.these.ideas.concepts.in.my.home.department", 
"Please.rate.the.following.....I.can.see.myself.making.use.of.handouts.and.follow.up.material.references.that.were.provided.in.class.today", 
"Overall.I.found.this.session.to.be..."), class = "data.frame", row.names = c(NA, 
-10L))

Data2 <- dput(Data2)
structure(list(Created.At = structure(c(1L, 2L, 2L, 3L, 4L, 5L, 
6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L), .Label = c("2016/09/13 4:28:24 PM", 
"2016/09/13 4:29:11 PM", "2016/09/13 4:29:23 PM", "2016/09/13 4:29:29 PM", 
"2016/09/13 4:29:34 PM", "2016/09/13 4:29:37 PM", "2016/09/13 4:29:40 PM", 
"2016/09/13 4:29:41 PM", "2016/09/13 4:29:49 PM", "2016/09/13 4:30:19 PM", 
"2016/09/13 4:32:42 PM", "2016/09/13 4:35:50 PM", "2016/09/13 4:41:46 PM", 
"2016/09/13 9:41:27 PM", "2016/09/26 10:53:28 PM", "2016/10/11 10:30:34 PM"
), class = "factor"), Please.rate.teacher..Foo.Bar...Skills.of.interaction.and.rapport.with.learners = c(5L, 
5L, 4L, 4L, 4L, 5L, 5L, 4L, 5L, 5L, 5L, 5L, 5L, 4L, 5L, 5L, 5L
), Please.rate.teacher..Foo.Bar...Clearly.communicated.goals.outcomes.for.the.session = c(5L, 
5L, 4L, 4L, 4L, 5L, 5L, 4L, 5L, 5L, 4L, 4L, 5L, 4L, 4L, 5L, 5L
), Please.rate.teacher..Foo.Bar...Knowledge.of.subject.was.clearly.demonstrated = c(5L, 
3L, 4L, 4L, 5L, 5L, 4L, 3L, 4L, 5L, 4L, 4L, 4L, 5L, 4L, 5L, 5L
), Please.rate.teacher..Foo.Bar...Conveys.the.significance.of.the.information = c(5L, 
5L, 4L, 4L, 4L, 5L, 5L, 3L, 4L, 5L, 4L, 4L, 5L, 4L, 4L, 5L, 5L
), Please.rate.teacher..Foo.Bar...Class.preparation.materials....referred.to.or.used = c(5L, 
4L, 4L, 4L, 4L, 4L, 5L, 5L, 4L, 5L, 5L, 4L, 5L, 4L, 5L, 5L, 5L
), Please.rate.teacher..Foo.Bar...Teaching.methods.facilitated.achievement.of.goals.for.session = c(5L, 
5L, 5L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 4L, 5L, 5L, 5L
), Please.rate.teacher..Foo.Bar...Uses.time.effectively = c(5L, 
5L, 4L, 4L, 5L, 5L, 5L, 5L, 4L, 5L, 5L, 5L, 4L, 5L, 5L, 5L, 5L
), Please.rate.teacher..Foo.Bar...Compared.to.other.teachers..this.one.is... = c(5L, 
5L, 4L, 4L, 4L, 5L, 5L, 4L, 4L, 5L, 4L, 4L, 5L, 4L, 4L, 5L, 5L
), Please.rate.teacher..Foo.Bar...Over.all.rating.for.teacher = c(5L, 
4L, 4L, 4L, 4L, 5L, 5L, 4L, 5L, 5L, 5L, 4L, 5L, 5L, 5L, 5L, 5L
), Please.rate.the.following.....I.feel.that.I.achieved.the.learning.objectives.for.today.s.sessions = c(4L, 
4L, NA, 4L, 5L, 5L, 4L, 4L, 5L, 5L, 5L, 4L, 4L, 5L, 5L, 4L, 4L
), Please.rate.the.following.....The.session.promoted.ideas.for.dissemination.of.concepts.in.my.home.department.or.other.areas = c(5L, 
4L, NA, NA, 4L, 5L, 4L, 4L, 5L, 4L, 5L, 4L, 4L, 4L, 5L, 5L, 5L
), Please.rate.the.following.....I.feel.prepared.to.disseminate.these.ideas.concepts.in.my.home.department = c(4L, 
3L, NA, 4L, 4L, 5L, 4L, 3L, 4L, 4L, 5L, 4L, 3L, 4L, 5L, 4L, 4L
), Please.rate.the.following.....I.can.see.myself.making.use.of.handouts.and.follow.up.material.references.that.were.provided.in.class.today = c(5L, 
4L, NA, NA, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 4L, 4L, 5L, 5L, 5L, 5L
), Overall.I.found.this.session.to.be... = c(5L, 4L, 4L, 3L, 
4L, 5L, 4L, 4L, 4L, 4L, 5L, 4L, 4L, 5L, 5L, 5L, 5L)), .Names = c("Created.At", 
"Please.rate.teacher..Foo.Bar...Skills.of.interaction.and.rapport.with.learners", 
"Please.rate.teacher..Foo.Bar...Clearly.communicated.goals.outcomes.for.the.session", 
"Please.rate.teacher..Foo.Bar...Knowledge.of.subject.was.clearly.demonstrated", 
"Please.rate.teacher..Foo.Bar...Conveys.the.significance.of.the.information", 
"Please.rate.teacher..Foo.Bar...Class.preparation.materials....referred.to.or.used", 
"Please.rate.teacher..Foo.Bar...Teaching.methods.facilitated.achievement.of.goals.for.session", 
"Please.rate.teacher..Foo.Bar...Uses.time.effectively", "Please.rate.teacher..Foo.Bar...Compared.to.other.teachers..this.one.is...", 
"Please.rate.teacher..Foo.Bar...Over.all.rating.for.teacher", 
"Please.rate.the.following.....I.feel.that.I.achieved.the.learning.objectives.for.today.s.sessions", 
"Please.rate.the.following.....The.session.promoted.ideas.for.dissemination.of.concepts.in.my.home.department.or.other.areas", 
"Please.rate.the.following.....I.feel.prepared.to.disseminate.these.ideas.concepts.in.my.home.department", 
"Please.rate.the.following.....I.can.see.myself.making.use.of.handouts.and.follow.up.material.references.that.were.provided.in.class.today", 
"Overall.I.found.this.session.to.be..."), class = "data.frame", row.names = c(NA, 
-17L))

Data1在会话中有3名教师,Data2只有一名教师。我认为要理解数据,并与其他人口统计信息相匹配,我需要为教师姓名&#34;创建一个变量。

编辑以显示所需的输出:

               Created.At Rating                                                           Var
1   2016/01/19 3:36:24 PM      4   Please rate teacher: John Doe | Over all rating for teacher
2   2016/01/19 4:06:32 PM      5   Please rate teacher: John Doe | Over all rating for teacher
3   2016/01/19 4:08:52 PM      4   Please rate teacher: John Doe | Over all rating for teacher
4   2016/01/19 4:40:26 PM      5   Please rate teacher: John Doe | Over all rating for teacher
5   2016/01/19 6:38:57 PM      4   Please rate teacher: John Doe | Over all rating for teacher
6   2016/01/19 8:18:20 PM      5   Please rate teacher: John Doe | Over all rating for teacher
7   2016/01/19 8:58:38 PM      5   Please rate teacher: John Doe | Over all rating for teacher
8  2016/01/19 10:16:08 PM      4   Please rate teacher: John Doe | Over all rating for teacher
9  2016/01/19 11:08:58 PM      4   Please rate teacher: John Doe | Over all rating for teacher
10  2016/01/20 8:16:28 PM      4   Please rate teacher: John Doe | Over all rating for teacher
11  2016/01/19 3:36:24 PM      4  Please rate teacher: Jane Doe  | Over all rating for teacher
12  2016/01/19 4:06:32 PM      4  Please rate teacher: Jane Doe  | Over all rating for teacher
13  2016/01/19 4:08:52 PM      4  Please rate teacher: Jane Doe  | Over all rating for teacher
14  2016/01/19 4:40:26 PM      4  Please rate teacher: Jane Doe  | Over all rating for teacher
15  2016/01/19 6:38:57 PM      4  Please rate teacher: Jane Doe  | Over all rating for teacher
16  2016/01/19 8:18:20 PM      5  Please rate teacher: Jane Doe  | Over all rating for teacher
17  2016/01/19 8:58:38 PM      5  Please rate teacher: Jane Doe  | Over all rating for teacher
18 2016/01/19 10:16:08 PM      4  Please rate teacher: Jane Doe  | Over all rating for teacher
19 2016/01/19 11:08:58 PM      4  Please rate teacher: Jane Doe  | Over all rating for teacher
20  2016/01/20 8:16:28 PM      3  Please rate teacher: Jane Doe  | Over all rating for teacher
21  2016/01/19 3:36:24 PM     NA Please rate teacher: Sue Smith  | Over all rating for teacher
22  2016/01/19 4:06:32 PM      3 Please rate teacher: Sue Smith  | Over all rating for teacher
23  2016/01/19 4:08:52 PM      4 Please rate teacher: Sue Smith  | Over all rating for teacher
24  2016/01/19 4:40:26 PM      5 Please rate teacher: Sue Smith  | Over all rating for teacher
25  2016/01/19 6:38:57 PM      4 Please rate teacher: Sue Smith  | Over all rating for teacher
26  2016/01/19 8:18:20 PM      5 Please rate teacher: Sue Smith  | Over all rating for teacher
27  2016/01/19 8:58:38 PM      5 Please rate teacher: Sue Smith  | Over all rating for teacher
28 2016/01/19 10:16:08 PM      4 Please rate teacher: Sue Smith  | Over all rating for teacher
29 2016/01/19 11:08:58 PM      4 Please rate teacher: Sue Smith  | Over all rating for teacher
30  2016/01/20 8:16:28 PM      2 Please rate teacher: Sue Smith  | Over all rating for teacher
31  2016/09/13 4:28:24 PM      5    Please rate teacher: Foo Bar | Over all rating for teacher
32  2016/09/13 4:29:11 PM      4    Please rate teacher: Foo Bar | Over all rating for teacher
33  2016/09/13 4:29:11 PM      4    Please rate teacher: Foo Bar | Over all rating for teacher
34  2016/09/13 4:29:23 PM      4    Please rate teacher: Foo Bar | Over all rating for teacher
35  2016/09/13 4:29:29 PM      4    Please rate teacher: Foo Bar | Over all rating for teacher
36  2016/09/13 4:29:34 PM      5    Please rate teacher: Foo Bar | Over all rating for teacher
37  2016/09/13 4:29:37 PM      5    Please rate teacher: Foo Bar | Over all rating for teacher
38  2016/09/13 4:29:40 PM      4    Please rate teacher: Foo Bar | Over all rating for teacher
39  2016/09/13 4:29:41 PM      5    Please rate teacher: Foo Bar | Over all rating for teacher
40  2016/09/13 4:29:49 PM      5    Please rate teacher: Foo Bar | Over all rating for teacher
41  2016/09/13 4:30:19 PM      5    Please rate teacher: Foo Bar | Over all rating for teacher
42  2016/09/13 4:32:42 PM      4    Please rate teacher: Foo Bar | Over all rating for teacher
43  2016/09/13 4:35:50 PM      5    Please rate teacher: Foo Bar | Over all rating for teacher
44  2016/09/13 4:41:46 PM      5    Please rate teacher: Foo Bar | Over all rating for teacher
45  2016/09/13 9:41:27 PM      5    Please rate teacher: Foo Bar | Over all rating for teacher
46 2016/09/26 10:53:28 PM      5    Please rate teacher: Foo Bar | Over all rating for teacher
47 2016/10/11 10:30:34 PM      5    Please rate teacher: Foo Bar | Over all rating for teacher

理想会是这样的:

               Created.At Overall.Rating   Teacher
1   2016/01/19 3:36:24 PM              4  John Doe
2   2016/01/19 4:06:32 PM              5  John Doe
3   2016/01/19 4:08:52 PM              4  John Doe
4   2016/01/19 4:40:26 PM              5  John Doe
5   2016/01/19 6:38:57 PM              4  John Doe
6   2016/01/19 8:18:20 PM              5  John Doe
7   2016/01/19 8:58:38 PM              5  John Doe
8  2016/01/19 10:16:08 PM              4  John Doe
9  2016/01/19 11:08:58 PM              4  John Doe
10  2016/01/20 8:16:28 PM              4  John Doe
11  2016/01/19 3:36:24 PM              4  Jane Doe
12  2016/01/19 4:06:32 PM              4  Jane Doe
13  2016/01/19 4:08:52 PM              4  Jane Doe
14  2016/01/19 4:40:26 PM              4  Jane Doe
15  2016/01/19 6:38:57 PM              4  Jane Doe
16  2016/01/19 8:18:20 PM              5  Jane Doe
17  2016/01/19 8:58:38 PM              5  Jane Doe
18 2016/01/19 10:16:08 PM              4  Jane Doe
19 2016/01/19 11:08:58 PM              4  Jane Doe
20  2016/01/20 8:16:28 PM              3  Jane Doe
21  2016/01/19 3:36:24 PM             NA Sue Smith
22  2016/01/19 4:06:32 PM              3 Sue Smith
23  2016/01/19 4:08:52 PM              4 Sue Smith
24  2016/01/19 4:40:26 PM              5 Sue Smith
25  2016/01/19 6:38:57 PM              4 Sue Smith
26  2016/01/19 8:18:20 PM              5 Sue Smith
27  2016/01/19 8:58:38 PM              5 Sue Smith
28 2016/01/19 10:16:08 PM              4 Sue Smith
29 2016/01/19 11:08:58 PM              4 Sue Smith
30  2016/01/20 8:16:28 PM              2 Sue Smith
31  2016/09/13 4:28:24 PM              5   Foo Bar
32  2016/09/13 4:29:11 PM              4   Foo Bar
33  2016/09/13 4:29:11 PM              4   Foo Bar
34  2016/09/13 4:29:23 PM              4   Foo Bar
35  2016/09/13 4:29:29 PM              4   Foo Bar
36  2016/09/13 4:29:34 PM              5   Foo Bar
37  2016/09/13 4:29:37 PM              5   Foo Bar
38  2016/09/13 4:29:40 PM              4   Foo Bar
39  2016/09/13 4:29:41 PM              5   Foo Bar
40  2016/09/13 4:29:49 PM              5   Foo Bar
41  2016/09/13 4:30:19 PM              5   Foo Bar
42  2016/09/13 4:32:42 PM              4   Foo Bar
43  2016/09/13 4:35:50 PM              5   Foo Bar
44  2016/09/13 4:41:46 PM              5   Foo Bar
45  2016/09/13 9:41:27 PM              5   Foo Bar
46 2016/09/26 10:53:28 PM              5   Foo Bar
47 2016/10/11 10:30:34 PM              5   Foo Bar

4 个答案:

答案 0 :(得分:1)

根据其他一些答案以及一些挖掘和黑客行为,我尝试了以下内容,它似乎有效:

library(tidyr)

# Read in file path to .csv subject files
Filepath <- dirname(file.choose()) # Choose a file in the directory
                                   #  with all the .csv files

# Get a list of all files in the directory
file_names <- dir(Filepath, full.names = TRUE) 

# Function to read .csv files listed from directory
read_data <- function(file_names) {
        read.csv(file_names, sep = "\t", fileEncoding = "utf-16",
             check.names = FALSE, stringsAsFactors = FALSE) 
}

# Create a list of data frames from .csv files
data_list <- lapply(file_names, read_data)

# Create a wide data from of all rows from variables
Data_Wide <- lapply(data_list, select, `Created At`,
                    contains("Over all rating for teacher")) %>% 
             bind_rows()

# Gather to long data
All_Data <- gather(Data_Wide, Teacher, Overall_Rating, -`Created At`,na.rm = T) %>%
    mutate(Teacher = gsub("Please rate teacher: |
     [|] Over all rating for teacher|
       [(]Scholarship[)]|[(]Teaching Excellence[)]", "", Teacher ),
       Teacher = trimws(Teacher), Teacher = tolower(Teacher), 
       Teacher = tools::toTitleCase(Teacher))

如果有人有更高效或更清洁的方法,请发布:)

答案 1 :(得分:0)

您可以尝试将它们存储在列表中,而不是将每个帧分配到全局变量中。

library(dplyr)
read_data <- function(files) {
  read.csv(files) %>% 
    dplyr::mutate(id_col = files)
}
filenames <- list.files(pattern = ".csv")

mydata <- lapply(files, read_data)

这会为您提供包含所有数据框的列表。然后选择您想要的列

new_data <- lapply(mydata, function(x){
  dplyr::select(x, Created.At, id_col, 
contains("Over.all.rating.for.teacher"))
  return(x)
})

请注意,由于缺乏可重复的示例,我无法对此进行测试,但这应该会让您走上正确的轨道

答案 2 :(得分:0)

这是一个更短的方法。您可以使用s = ''.join(s.split('<tbody>')) s = ''.join(s.split('</tbody>')) s = ''.join(s.split('<thead>')) s = ''.join(s.split('</thead>')) 获取当前环境中的数据框列表。

在下面的示例中,我从两个数据框中选择列ls()。这类似于你想解决的问题:

name

打印(输出)

library(purrr)

# sample dataframes
df1 <- data.frame(name = c('a','b','c'), val1 = c(1,2,3))
df2 <- data.frame(name = c('d','e','f'), val2 = c(1,2,3),val3 = c(7,8,9))


# create a list of dataframes
list_of_dataframes <- list(df1, df2)

# select columns and create final dataframe
output <- do.call(rbind, map(list_of_dataframes,`[` ,'name')) # instead of 'name' here you can specify a vector c('Created.at','another_column','another_column')

答案 3 :(得分:0)

一种选择可能是使用dplyr::select_atdplyr::bind_rowsselect_at将仅用于获取包含Over.all.rating.for.teacherCreated.At

的列
library(dplyr)


res <- Data1 %>% 
select_at(vars(c("Created.At"),grep("Over.all.rating.for.teacher", 
names(Data1), value = TRUE))) %>%
  bind_rows(Data2 %>% 
      select_at(vars(c("Created.At"),grep("Over.all.rating.for.teacher", 
      names(Data2), value = TRUE))))


str(res)
'data.frame':   27 obs. of  5 variables:
 $ Created.At                                                   : chr  "2016/01/19 3:36:24 PM" "2016/01/19 4:06:32 PM" "2016/01/19 4:08:52 PM" "2016/01/19 4:40:26 PM" ...
 $ Please.rate.teacher..John.Doe...Over.all.rating.for.teacher  : int  4 5 4 5 4 5 5 4 4 4 ...
 $ Please.rate.teacher..Jane.Doe....Over.all.rating.for.teacher : int  4 4 4 4 4 5 5 4 4 3 ...
 $ Please.rate.teacher..Sue.Smith....Over.all.rating.for.teacher: int  NA 3 4 5 4 5 5 4 4 2 ...
 $ Please.rate.teacher..Foo.Bar...Over.all.rating.for.teacher   : int  NA NA NA NA NA NA NA NA NA NA ...

注意: OP共享的数据包含Factor字符串,因此上述解决方案可能会发出警告。在操作数据帧之前将列转换为character会更好。