通过匹配相似的行来解构 R 中的列?

Posted

技术标签:

【中文标题】通过匹配相似的行来解构 R 中的列?【英文标题】:Deconstructing a column in R by matching similar rows? 【发布时间】:2017-06-29 18:55:56 【问题描述】:

我目前正在做一个项目,我有一个巨大的数据框,16196 个 obs 的 25 个变量。目标是消除每个特定处理的数据框中可能存在的任何异常值。问题在于带有治疗的列中包含每种治疗,并且每种治疗具有不同的长度,它们持续。让我给你举个例子。

val_lvl2: chr "Cervical Fusion (Spinal Fusion)" "Non-Surgical Treatment" "Non-Surgical Treatment" "Non-Surgical Treatment" ...

prd_num_of_days_num: num 167 46 46 46 167 46 46 46 167 46 ...

输出来自 str(z_combined_cost_dtrmnt)

我们可以看到 val_lvl2 有所有的处理(100+ 未显示)。并且 prd_num_of_days_num 具有特定治疗的长度。现在我想做的是将所有(那里有更多)“宫颈融合”数据和“非手术治疗”数据合并到自己的小数据框中。之后,我想对治疗的长度建立 95% 的置信度,然后删除任何不属于该 CI 的数据行。然后带回数据框,以便我们再次拥有 1 个大数据框,但每次处理中的异常值都消失了。

我将不胜感激,因为我真的不知道从哪里开始,因为似乎没有简单的方法可以按照我想要的方式分解数据框。

目前正在考虑使用聚合函数。

agg

但是,这会导致此错误:aggregate.data.frame(as.data.frame(x), ...) 中的错误:由多个实际参数匹配的形式参数“by”

TL/DR

大数据框 -->

基于 val_lvl2 中唯一值的较小数据框,请记住存在相似的唯一值,即“宫颈融合”的多个实例应该在同一个小数据框中 -->

根据prd_num_of_days_num(治疗长度)为每个小数据框创建一个95% CI -->

如果 prd_num_of_days_num 在 CI 之外,则删除每个唯一值的整行 -->

将没有异常值的小数据框再次合并为一个大数据框。

【问题讨论】:

欢迎来到 ***。请提供minimal reproducible example 嘿@StevenBeaupré!我目前的想法是可能尝试聚合。这是我到目前为止所拥有的。 agg 【参考方案1】:

所以你有一个数据框 (df),有 25 个变量,你想把它分解成 X 个更小的数据框,x 是唯一处理的数量,每个都包含剩余的 24 个变量,但只包含一种类型的治疗。对吗?

treatment1 <- df[df$val_lvl2 == "Cervical Fusion (Spinal Fusion)"]
treatment2 <- df[ds$val_lvl2 =="Non-Surgical Treatment"]
# etc...

有更简洁、“更好”的方法,但我认为这是您应该开始掌握如何在 R 中组织数据的地方。

【讨论】:

没错!我其实想过做你刚才在上面做的事。但由于 val_lvl2 中有大约 150 种治疗方法,我希望能找到更有效和更通用的方法。一些会遵循这条道路的东西。大数据框 --> 基于唯一 val_lvl2 的较小数据框 --> 根据 prd_num_of_days_num 为每个小数据框创建 95 CI --> 如果 prd_num_of_days_num 在 CI 之外,则删除整行 --> 将没有异常值的小数据框合并为一个又是大数据框。不知道为什么文本没有按我想要的方式隔开...... 对不起,但我有点难以理解您到底想要完成什么。我建议您删除此帖子,并使用易于复制的小规模示例代码创建一个新帖子。要为您的所有案例快速执行我上面所做的操作,请尝试以下操作:treatments &lt;- unique(df$val_lvl2) for (i in c(1:length(treatments))) assign(paste("df_", treatments[[i]], sep=''), df[df == treatments[[i]]) 谢谢!如果我不能从发布的内容中挤出解决方案,我会看看那个小 sn-p 把我带到哪里,然后回到这个董事会。这有点复杂,所以我很感激你的努力!

以上是关于通过匹配相似的行来解构 R 中的列?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过基于R中的条件过滤行来读取文件

如何通过取消旋转标题行来转置Excel中的列[重复]

如何通过读取“[MyClass class]”的行来修复“Interface Builder 文件中的未知类 <MyClass>”错误?

通过合并相似的列来操作重复的行[重复]

r 根据指定的列合并两个数据帧。默认情况下,仅合并匹配的行。

是否有一个 R 函数来匹配基于具有部分相似性的字符串的数据框列?