2017-06-02 54 views
0

而不是走开这里的可重复的例子,我解释了为什么它做它做。在R中,为什么这个调用聚集()做到这一点

data = read.csv(text="Email foo.final bar.final 
[email protected] 100  200 
[email protected] 101  201 
[email protected] 102  202 
[email protected] 103  103", header=T, sep="") 

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

是指:除“电子邮件”,把所有的列的值转换成所谓的“等级”一单新列,添加一个名为“钥匙”新列包含列标题下发生,它的值。鉴于我们有4个观测值,每个观测值有两个变量,这应该产生8个观测值。结果:

 Email  key Grade 
1 [email protected] foo.final 100 
2 [email protected] foo.final 101 
3 [email protected] foo.final 102 
4 [email protected] foo.final 103 
5 [email protected] bar.final 200 
6 [email protected] bar.final 201 
7 [email protected] bar.final 202 
8 [email protected] bar.final 103 

B =收集(数据,密钥级)

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

  key  Grade 
1  Email [email protected] 
2  Email [email protected] 
3  Email [email protected] 
4  Email [email protected] 
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

什么是你期待?哪一部分对你没有意义?我不确定你在问什么。另外,如果在提问时包含一个简单的[可重现的示例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),则会更好。 'str()'不如'dput()'有用。更好地使用内置的数据集或最简单的示例。 – MrFlick

+0

这是非常期待的权利?你正在收集所有的变量(不是转义电子邮件),它强制在一列中输入数字/字符值 – timfaber

+0

所有的电子邮件实际上是相同的吗?如果不是,那么你可能想重新考虑你提供的例子,因为它不代表你的用例。 – Dason

回答

0

你可能需要做更多的东西像这样

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