全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1213 9
2021-03-21
我有一个dataframe,第一列为唯一字符,第二列为名称(名称有两个特点,一是有多个重复值,二是在某一行第一次出现后,如果下一行还是这个名词,则后面相同名称的第二列为空值,即该行名词与上行相同),第三列为对应的数值。结构如下:
   A        B       C
   1       ab      23
   2       ac      43
   3                46
   4       ab     54
   5                53
   6                49
   7       be     78
   8       ac     83
   9               98
   ...

现在我想在这个dataframe中用一组名称向量x筛选,如ac, ab, be...,希望一个新的dataframe,其内容中需要保留每个名称的所有数值,包括第二列中的空值,如筛选后ac,能保留上表中的4个值43,46,83,98。

如何能在R中实现,请教大神指教!谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2021-3-22 11:03:57
可以通过zoo包中的na.locf()函数来填充第二列中的空值,先通过dplyr中的mutate来添加一个新的列,它是不含有空值的,空值都被填充了,再通过filter来筛选你要的数据
复制代码





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-3-22 12:40:03
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-3-22 15:21:40
xc2156 发表于 2021-3-22 11:03
可以通过zoo包中的na.locf()函数来填充第二列中的空值,先通过dplyr中的mutate来添加一个新的列,它是不含有 ...
谢谢回复!!

试了您说的方法,df %>% mutate(D = zoo::na.locf(B))后,结果是是D列和B列完全一样,B列中的空值在D列中也还是空值,没有填充,是我哪里有误吗。

另外最后过滤的时候是一个向量factor包含多个名称,不仅是一个,可以直接用filter(D == factor)吗?

谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-3-22 15:42:25
屋檐滴语 发表于 2021-3-22 12:40
谢谢!

测试了下,您这个方法实现了筛选,不过检查的时候发现,之前B列中有名称的行在new_df都保留了,但空值的行在new_df中都没有了。所以好像没有完成填充。。

谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-3-22 15:44:03
xc2156 发表于 2021-3-22 11:03
可以通过zoo包中的na.locf()函数来填充第二列中的空值,先通过dplyr中的mutate来添加一个新的列,它是不含有 ...
谢谢,这个方法试了之后,新的D列和原来的B列完全一样,没有名称的空值行,还是没有填充,是不是哪里还是有问题

谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群