在R中,为什么这个调用gather()这样做?

时间:2017-06-02 13:39:36

标签: r tidyr

这是一个可重复的例子,我解释了它为什么会这样做。

data = read.csv(text="Email foo.final bar.final
abc@foo.com 100       200
cde@foo.com 101       201
xyz@foo.com 102       202
zzz@foo.com 103       103", header=T, sep="" )

a = gather(data, key, Grade, -Email)

表示:除了"电子邮件",将所有列的值放入一个名为" Grade"的新列中。并添加一个名为" key"的新列。其中包含发生值的列标题。鉴于我们有4个观测值,每个观测值有两个变量,应该产生8个观测值。结果:

        Email       key Grade
1 abc@foo.com foo.final   100
2 cde@foo.com foo.final   101
3 xyz@foo.com foo.final   102
4 zzz@foo.com foo.final   103
5 abc@foo.com bar.final   200
6 cde@foo.com bar.final   201
7 xyz@foo.com bar.final   202
8 zzz@foo.com bar.final   103

b =聚集(数据,密钥,等级)

同样的意思,但现在我们包括电子邮件。现在我们有4个观测但有3个变量,所以我们应该得到12个观测值。结果:

         key       Grade
1      Email abc@foo.com
2      Email cde@foo.com
3      Email xyz@foo.com
4      Email zzz@foo.com
5  foo.final         100
6  foo.final         101
7  foo.final         102
8  foo.final         103
9  bar.final         200
10 bar.final         201
11 bar.final         202
12 bar.final         103

我并不感到惊讶。

1 个答案:

答案 0 :(得分:0)

你可能需要做更像这样的事情

f2 <- f1 %>% 
      gather(key = Assignment, value = Grade, COURSE.final:EXAM.final) %>%
      select(-email)