r - R:为什么我使用 spread() 会丢失数据?
问题描述
我有一个看起来像这样的小标题。
# A tibble: 1,000 x 3
id question answer
<chr> <chr> <chr>
1 aaa What is your favorite color? Green
2 aaa What is your favorite band? Green Day
3 aaabb What is your favorite color? Blue
4 aaabb What is your favorite band? Blue
5 ccc What is your favorite color? Blue
6 ccc What is the difference between you and me? Five bank accounts
# ... with more rows
我想将其扩展为一个宽数据框。我使用了这段代码。
aTibble %>% distinct() %>% spread(question, answer)
但是,我最终得到了一个充满空行的数据框。
# A tibble: 1,000 x 3
id V1 What is your favorite color? What is your favorite band? What is the difference between you and me?
1 aaa NA NA NA
2 aaa NA NA NA
3 aaabb NA NA NA
4 aaabb NA NA NA
5 ccc NA NA NA
6 ccc NA NA NA
# ... with more rows
在原始 tibble 中,一些行具有 ID,然后为空,用于问答。一个 ID 没有重复的问题。也就是说,不同的 ID 可以回答不同的问题,它们的问题并不相同。
此外,我没有制作 V1 行,这不在我原来的 tibble 中。它出现在 spread() 之后。
令人沮丧的是,当我在一个小数据集上执行该函数时,它工作得很好。当我对完整数据集(约 150K 记录)执行此功能时,我得到了 NA。
解决方案
很难看出为什么这不起作用。
dcast
是使用 from 的好选择reshape2
。你可以达到同样的目的。
aTibble %>% distinct() %>% dcast(id ~ question, value.var = "answer")
推荐阅读
- javascript - 如何通过索引启用 tr 的点击?
- python - 如何在奇异容器中挂载 /tmp 作为 tmpfs
- firebase - 使用 HTTP REST API 检查 Firebase 实时数据库中是否存在具有特定值的记录
- python - 替换任意深度的嵌套列表中的元素
- python - 将 image.png 附加到嵌入 Discord.py
- python - 在这里,我在此代码中找到给定解释的原因
- java - 如何为 java 的 apache 光束管道配置 spark runner
- python - 在 Python 中使用特征值和特征向量进行特征选择
- node.js - 如何使用 Jest 模拟 (request-promise).defaults({ jar: true })?
- python - Python请求ConnectionError:('连接中止。',ConnectionResetError(10054)