r - 将数据框的一列转置为多行,同时保留 ID
问题描述
我正在处理一个现有的大型数据框,该数据框有一列需要“转置”为多行,同时在每一行中保留原始用户 ID。
请注意,favs 列的内容实际上是一个包含“c( ... )”的字符串。此处显示了简化版本:
**uId** **favs**
1000 c('pizza')
1001 c('seafood','steaks')
1002 NA
1003 c('sushi','strawberries')
我想要的输出:
**uId** **favs**
1000 pizza
1001 seafood
1001 steaks
1002 NA
1003 sushi
1003 strawberries
最有效的方法是什么?我考虑过 melt/dcast 但不确定如何在此处应用它,因为 FAVS 列需要不列出,然后将包含不同数量的元素。
解决方案
我们可以用unnest
library(tidyr)
unnest(df1)
# uID favs
#1 1000 pizza
#2 1001 seafood
#3 1001 steaks
#4 1002 <NA>
#5 1003 sushi
#6 1003 strawberries
或者,使用'favs' 列和'favs'base R
复制其他列行lengths
unlist
data.frame(uID = rep(df1$uID, lengths(df1$favs)), favs = unlist(df1$favs))
这可能rep
既快又unlist
快
数据
df1 <- data.frame(uID = 1000:1003,
favs = I(list('pizza', c('seafood', 'steaks'), NA,
c('sushi', 'strawberries'))))
推荐阅读
- asp.net - Windows 身份验证提示 - 仅部分用户
- angular - Angular2在组件中迭代JSON
- debugging - Electron js错误-找不到文件
- android - 是否可以获取 Exoplayer、元数据等艺术家信息?
- arrays - 在表格行角度显示json数组列表
- angular - 角度:创建名为 Heros.ts 的模型
- python - python3 numpy:数组的索引太多
- java - Java FX ListView 单元格背景在滚动时影响未着色的单元格
- react-native - 如何在 Text 中围绕 Text 包裹 TouchableOpacity?
- c++ - 使用 body_limit 提升野兽消息