R:将NAs添加到数据帧中 [英] R: Adding NAs into Data Frame
本文介绍了R:将NAs添加到数据帧中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个这样的数据框架:
I have a data frame like so:
Name Position Value
a 1 0.2
a 3 0.4
a 4 0.3
b 1 0.5
b 2 0.4
b 5 0.3
c 2 0.3
c 3 0.4
c 5 0.1
d 1 0.2
d 2 0.4
d 3 0.5
我想让它的位置一直从1到5为每个名称,并填写NAs值如下:
I want to make it so that Position always go from 1 to 5 for each Name and fill in NAs into Value like so:
Name Position Value
a 1 0.2
a 2 NA
a 3 0.4
a 4 0.3
a 5 NA
b 1 0.5
b 2 0.4
b 3 NA
b 4 NA
b 5 0.3
c 1 NA
c 2 0.3
c 3 0.4
c 4 NA
c 5 0.1
d 1 0.2
d 2 0.4
d 3 0.5
d 4 NA
d 5 NA
有没有办法做到这一点,而不用前两列创建一个虚拟数据框,然后用合并做一些外连接?
Is there a way to do it without creating a dummy data frame with the first 2 columns then doing some sort of outer join with merge?
谢谢。
推荐答案
您可以使用 reshape2
包装:
# make sample data frame
df <- read.table(text = "Name Position Value
a 1 0.2
a 3 0.4
a 4 0.3
b 1 0.5
b 2 0.4
b 5 0.3
c 2 0.3
c 3 0.4
c 5 0.1
d 1 0.2
d 2 0.4
d 3 0.5", header = TRUE, stringsAsFactors = FALSE)
library('reshape2')
df2 <- dcast(df, Name ~ Position)
df3 <- melt(df2, value.name = "Value", variable.name = "Position")
df3[order(df3$Name), ]
# Name Position Value
# 1 a 1 0.2
# 5 a 2 NA
# 9 a 3 0.4
# 13 a 4 0.3
# 17 a 5 NA
# 2 b 1 0.5
# 6 b 2 0.4
# 10 b 3 NA
# 14 b 4 NA
# 18 b 5 0.3
# 3 c 1 NA
# 7 c 2 0.3
# 11 c 3 0.4
# 15 c 4 NA
# 19 c 5 0.1
# 4 d 1 0.2
# 8 d 2 0.4
# 12 d 3 0.5
# 16 d 4 NA
# 20 d 5 NA
这篇关于R:将NAs添加到数据帧中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文