- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个小问题,概念上似乎很简单,但我找不到方法......
假设我有一个 data.frame df2,其中一列列出了汽车品牌,另一列列出了每个品牌的所有型号,并用“,”分隔。我已经获得了 df2 聚合另一个名为 df1 的 data.frame,主键是模型。
我应该如何继续执行相反的任务(即:从 df2 到 df1)?我的猜测类似于 melt(df2, id=unlist(strsplit('models',',')))
...非常感谢!
这是一个 MWE:
df1 <- data.frame(model=c('a1','a2','a3','b1','b2','c1','d1','d2','d3','d4'),
brand=c('a','a','a','b','b','c','d','d','d','d'))
df1
collap <- function(x){
out <- paste(sort(unique(x)), collapse=",")
return (out)
}
df2 <- aggregate(df1$model, by=list(df1$brand), collap)
names(df2) <- c('brand','models')
df2 #how can I do the opposite task (ie: from df2 to df1)?
最佳答案
这里有两种选择:
使用data.table
和unlist
如下:
library(data.table)
DT <- data.table(df2)
DT[, list(model = unlist(strsplit(as.character(models), ","))),
by = brand]
# brand model
# 1: a a1
# 2: a a2
# 3: a a3
# 4: b b1
# 5: b b2
# 6: c c1
# 7: d d1
# 8: d d2
# 9: d d3
# 10: d d4
使用我的“splitstackshape”包中的concat.split.multiple
。这种方法的一个好处是能够使用一个简单的命令拆分多个列。
library(splitstackshape)
out <- concat.split.multiple(df2, "models", ",", "long")
out[complete.cases(out), ]
# brand time models
# 1 a 1 a1
# 2 b 1 b1
# 3 c 1 c1
# 4 d 1 d1
# 5 a 2 a2
# 6 b 2 b2
# 8 d 2 d2
# 9 a 3 a3
# 12 d 3 d3
# 16 d 4 d4
关于r - 熔化 + strsplit,或与聚合相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19711211/
我有一个小问题,概念上似乎很简单,但我找不到方法...... 假设我有一个 data.frame df2,其中一列列出了汽车品牌,另一列列出了每个品牌的所有型号,并用“,”分隔。我已经获得了 df2
我有一个如下所示的数据框: id Revenue Cost qty time 0 A 400 50 2 1 1 A
reshape2是一个允许强大的数据转换数组的包,通过它的两部分熔化/类型转换方法。然而,像所有工具一样,它嵌入了限制它可以处理的情况的假设。 什么数据整形问题可以解决reshape2不以目前的形式处
看看这个包含五个观测值和两个因子变量的测试数据集。 test respid s2q1 s2q2 1 32
这个问题在这里已经有了答案: Reshaping data.frame from wide to long format (9 个回答) 5年前关闭。 我怎样才能“取消旋转”表格?对此的正确技术术语是
我在 pandas DataFrame 中有这样的数据: 我想将它转换成这个(在 pandas DataFrame 中): 我尝试使用 df.melt()、df.pivot() 和 df.T() 但它
这个问题会寻求多种方法LET/LAMBDA VBA UDF和 Power Query Function ,所以不会有单一的正确答案,而是要用作引用的方法的征集。 Scott提出问题 here关于对包含
我是一名优秀的程序员,十分优秀!