在R中,为什么对gather()的调用会这样做?
这里有一个可复制的例子,我解释了它为什么会这样做在R中,为什么对gather()的调用会这样做?,r,tidyr,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) 意思是:除了“Email”
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)
意思是:除了“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
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
b=收集(数据、关键字、等级)
相同的意思,但现在我们包括电子邮件。现在我们有4个观测值,但有3个变量,所以我们应该得到12个观测值。结果:
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
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
我并不感到惊讶。您可能需要做更多类似的事情
f2 <- f1 %>%
gather(key = Assignment, value = Grade, COURSE.final:EXAM.final) %>%
select(-email)
f2%
收集(关键=作业,价值=分数,课程。期末:考试。期末)%>%
选择(-email)
您期望的是什么?哪一部分对你来说没有意义?我不太清楚你在问什么。另外,如果你在提问时加入一个简单的句子会更好。str()
不如dput()
有用。最好使用一个内置的数据集或一个最小的、简单的示例。这是非常期望的,对吗?您正在收集所有变量(而不是转义电子邮件),这些变量强制在单个列中使用数字/字符值。所有电子邮件实际上是相同的吗?如果不是,那么你可能会想重新考虑你给出的例子,因为它不代表你的用例。公平地说,我正在用一个可复制的例子重写整个问题,并解释让我惊讶的事情。