有条件地填充 R 中的缺失数据

数据先知

我有一个数据框,这样:

df$v1 = c('2', '', '', '', '3', '', '4', '', '', 'OT')

我想将此变量格式化为序数变量。然而,

df$v1 = as.ordered(df$v1)

结果是:

Ord.factor w/ 5 levels ""<"2"<"3"<"4"<..: 2 1 1 1 3 1 4 1 1 5

R 将空单元格读取为唯一条目,并将它们按顺序排列在最前面。我想要做的是用上面最后一个单元格的值(或根据您的方向在其左侧)填充空单元格以获得一个值。换句话说,这个向量实际上应该是这样的:

df$v1 = c('2', '2', '2', '2', '3', '3', '4', '4', '4', 'OT')

我相信此更改将允许我根据需要将变量格式化为序数。我已经尝试过as.ordered(),as.factor(),levels = c('1','2','3','4','OT')和ordered = TRUE的每种组合。但是,R 在包含时不使用“级别”或“有序”参数;as.factor() 函数,不使用“级别”或“有序”参数,不会产生序数变量;并且, as.ordered() 函数可以解决上述问题。因此,我相信在转换之前填充空单元格是最好的解决方案。最好的方法是什么?我知道我可以使用:

df$v1 = as.ordered(sub('^$', '2', df$v1))

用“2”填充空单元格;但是,每个单元格的替换值都不同。我可以做这样的事情:

df.a = df[1:4, ]
df.b = df[5:6, ]
df.c = df[7:9, ]
df.d = df[10, ]
df.a$v1 = as.ordered(sub('^$', '2', df.a$v1))
df.b$v1 = as.ordered(sub('^$', '3', df.b$v1))
df.c$v1 = as.ordered(sub('^$', '4', df.c$v1))

但是,我正在寻找一种自动执行此操作的方法。虽然在这种情况下,上述 7 行会产生我想要的结果,但我还有许多其他表格遇到相同的格式问题;并且,每个必要分区对应的行数各不相同。非常感谢您的帮助。

阿克伦

在将空格 ( )转换为 NA后,我们可以使用na.locffromzoo将 NA 元素替换为非 NA 前一个相邻元素""

library(zoo)
df$v1 <- with(df, na.locf(replace(v1, v1=="", NA)))
df$v1
#[1] "2"  "2"  "2"  "2"  "3"  "3"  "4"  "4"  "4"  "OT"

这也可以base R通过创建一个分组变量然后填充它来完成ave

with(df,  ave(v1, cumsum(v1!=""), FUN = function(x) x[1]))
#[1] "2"  "2"  "2"  "2"  "3"  "3"  "4"  "4"  "4"  "OT"

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有条件地填充缺失值,同时在R中重整长而宽的数据集

来自分类Dev

有条件地填充缺失值,同时重塑R中从长到宽的数据集

来自分类Dev

R 有条件地删除数据框

来自分类Dev

有条件地调用R中的特定列

来自分类Dev

有条件地删除R中的行

来自分类Dev

有条件地在R中创建列

来自分类Dev

有条件地在R中命名值

来自分类Dev

在R中有条件地填充ggplot的背景

来自分类Dev

从R中的数据帧中有条件地提取数据

来自分类Dev

有条件地修改 R 数据框中的所有数值?

来自分类Dev

有条件地填充数据框的行

来自分类Dev

R:有条件地替换数据框中几列中的值

来自分类Dev

有条件地在Angular中填充选择列表

来自分类Dev

如何在R中的数据框中有条件地选择列

来自分类Dev

R-使用for循环有条件地更改数据帧中的值

来自分类Dev

使用R有条件地替换数据框中的列值

来自分类Dev

R中按行有条件地联接数据帧

来自分类Dev

有条件地写入R中的数据表列

来自分类Dev

有条件地替换数据帧R中的字符元素

来自分类Dev

如何按R中的多列有条件地对数据框排序?

来自分类Dev

有条件地在R中的数据帧列表上进行映射

来自分类Dev

使用R有条件地替换数据框中的列值

来自分类Dev

有条件地写入R中的数据表列

来自分类Dev

一种更好的方法,根据R中另一df行中的多个值,有条件地填充一个df中的列

来自分类Dev

有条件地在R中用另一列(但不在同一行中)的值填充一列的值

来自分类Dev

在R中没有if语句的情况下有条件地从向量中删除

来自分类Dev

在R数据帧中有条件地添加多行(循环)

来自分类Dev

有条件地在R中子集数据帧列表

来自分类Dev

有条件地替换多个数据框的值R

Related 相关文章

热门标签

归档