Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中,为什么对gather()的调用会这样做?_R_Tidyr - Fatal编程技术网

在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()
有用。最好使用一个内置的数据集或一个最小的、简单的示例。这是非常期望的,对吗?您正在收集所有变量(而不是转义电子邮件),这些变量强制在单个列中使用数字/字符值。所有电子邮件实际上是相同的吗?如果不是,那么你可能会想重新考虑你给出的例子,因为它不代表你的用例。公平地说,我正在用一个可复制的例子重写整个问题,并解释让我惊讶的事情。