在数据框中按因子拆分列

测井仪

假设我有一个像这样的数据框:

v1   v2   v3
a    1    a
a    2    b
a    6    c
b    3    a
b    4    b
b    5    c

其中v1是一个因子,而v3是一个字符。我想对数据框架应用某些功能,例如将v2拆分为v1,然后将其包含在数据框架中:

v1   v2   v3   v4   v5
a    1    a    1    NA
a    2    b    2    NA
a    6    c    6    NA
b    3    a    NA   3
b    4    b    NA   4
b    5    c    NA   5

我能够解决的解决方案非常复杂。是否有一种优雅的方法?

(注意:存在v3的原因是,任何解决方案都需要能够处理数据帧中其他非数字矢量的存在,因此应该忽略这些矢量。)

G.格洛腾迪克

1)transform / ifelse如果其中包含少量已知值,一种简单的方法v1是手动生成每个新列:

transform(DF, a = ifelse(v1 == "a", v2, NA), 
              b = ifelse(v1 == "b", v2, NA))

2)轻按一种更通用的方法是:

cbind(DF, tapply(DF$v2, list(1:nrow(DF), DF$v1), identity))

上面的解决方案不需要任何附加软件包。

3)data.table此解决方案假定这v1是一个因素,并且的行DF是唯一的(就像问题中的情况一样):

# devtools::install_github("Rdatatable/datatable")  # 1.9.3

library(data.table)
DT <- data.table(DF)

DT[, split(v2, v1), by = DT]

如果的行DT可能不是唯一的,那么(基于与Arun的讨论)将可行:

DT[, c(.SD, split(v2, v1)), by = 1:nrow(DT)][, -1, with = FALSE]

更新一些改进。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按因子变量在数据框中的Colmeans

来自分类Dev

如何在数据框中拆分列并添加拆分值

来自分类Dev

按组划分列(在数据框中分组)

来自分类Dev

按组划分列(在数据框中分组)

来自分类Dev

按列名称在数据框中拆分多索引数据框

来自分类Dev

在熊猫中拆分列表并转换为数据框

来自分类Dev

在熊猫数据框中拆分列并分配标题

来自分类Dev

在行中拆分列表 python pandas 数据框

来自分类Dev

在数据框中动态拆分行

来自分类Dev

在数据框中动态拆分行

来自分类Dev

按分组数据拆分列表

来自分类Dev

R:在数据框中定义因子的级别

来自分类Dev

在数据框的多个列中折叠相似的因子

来自分类Dev

在数据框中重新排序因子名称的级别

来自分类Dev

拆分列并生成数据框

来自分类Dev

R 删除按因子分组的数据框中的异常值

来自分类Dev

在数据框中拆分字符串

来自分类Dev

在数据框中拆分每一行

来自分类Dev

在数据框内的行内拆分列字符串元素

来自分类Dev

按组拆分列

来自分类Dev

按拆分列排序

来自分类Dev

按拆分列排序

来自分类Dev

在数据框中按日期过滤数据

来自分类Dev

R:在数据框中按组替换数据

来自分类Dev

如何在数据框中按行处理数据

来自分类Dev

如何组合数据框中的字符串以列出和拆分列?

来自分类Dev

在数据框中按组折叠文本

来自分类Dev

绘制在数据框中按分组的聚合

来自分类Dev

在数据框中按条件对值进行排序