将 NA 与新数据框中的数据插入
Intercalate NAs with data in new data frame
我有一个 df
这样的:
X1 X2 X3 X4
Number 4 4 4 4
Number.1 2 3 3 2
我想把它变成这样:
> X1
NA
4
2
NA
4
3
NA
4
3
NA
4
2
NA
如何像示例中那样用 df
插入 NA
?
到目前为止,我尝试使用 sapply(df, function(x) NA, t(Number(y)))
但它检索到一个错误...我知道我必须使用 t()
来转置我的 df
但是如何在列之间添加 NA
到行?
有什么建议吗?
注意:我不是新手 R
但最近我遇到了一些问题......我在 Whosebug 上搜索了所有但我找不到答案.
这是一个想法,通过 stack
ing 数据框并使用 ind
和我们的组指标来添加额外的行,即
s_df <- stack(df)
rbind(data.frame(values = NA, ind = NA), do.call(rbind, by(s_df, s_df$ind, rbind, NA)))[1]
这给出了,
values
1 NA
X1.1 4
X1.2 2
X1.3 NA
X2.3 4
X2.4 3
X2.31 NA
X3.5 4
X3.6 3
X3.3 NA
X4.7 4
X4.8 2
X4.3 NA
免责声明 鸣谢 this answer
您可以将 rbind(NA, dat)
和 unlist
与 use.name = FALSE
一起使用 - 感谢 @zx8754。
data.frame(X1 = c(unlist(rbind(NA, dat), use.name = FALSE), NA))
结果
# X1
#1 NA
#2 4
#3 2
#4 NA
#5 4
#6 3
#7 NA
#8 4
#9 3
#10 NA
#11 4
#12 2
#13 NA
c(..., NA)
在向量末尾附加 NA
。
数据
dat <- structure(list(X1 = c(4L, 2L), X2 = c(4L, 3L), X3 = c(4L, 3L),
X4 = c(4L, 2L)), .Names = c("X1", "X2", "X3", "X4"), class = "data.frame", row.names = c("Number",
"Number.1"))
选择超出范围的行会创建 NA
行,然后 unlist
:
data.frame(X1 = c(NA, unlist(dat[1:3, ], use.names = FALSE)))
# X1
# 1 NA
# 2 4
# 3 2
# 4 NA
# 5 4
# 6 3
# 7 NA
# 8 4
# 9 3
# 10 NA
# 11 4
# 12 2
# 13 NA
我有一个 df
这样的:
X1 X2 X3 X4
Number 4 4 4 4
Number.1 2 3 3 2
我想把它变成这样:
> X1
NA
4
2
NA
4
3
NA
4
3
NA
4
2
NA
如何像示例中那样用 df
插入 NA
?
到目前为止,我尝试使用 sapply(df, function(x) NA, t(Number(y)))
但它检索到一个错误...我知道我必须使用 t()
来转置我的 df
但是如何在列之间添加 NA
到行?
有什么建议吗?
注意:我不是新手 R
但最近我遇到了一些问题......我在 Whosebug 上搜索了所有但我找不到答案.
这是一个想法,通过 stack
ing 数据框并使用 ind
和我们的组指标来添加额外的行,即
s_df <- stack(df)
rbind(data.frame(values = NA, ind = NA), do.call(rbind, by(s_df, s_df$ind, rbind, NA)))[1]
这给出了,
values 1 NA X1.1 4 X1.2 2 X1.3 NA X2.3 4 X2.4 3 X2.31 NA X3.5 4 X3.6 3 X3.3 NA X4.7 4 X4.8 2 X4.3 NA
免责声明 鸣谢 this answer
您可以将 rbind(NA, dat)
和 unlist
与 use.name = FALSE
一起使用 - 感谢 @zx8754。
data.frame(X1 = c(unlist(rbind(NA, dat), use.name = FALSE), NA))
结果
# X1
#1 NA
#2 4
#3 2
#4 NA
#5 4
#6 3
#7 NA
#8 4
#9 3
#10 NA
#11 4
#12 2
#13 NA
c(..., NA)
在向量末尾附加 NA
。
数据
dat <- structure(list(X1 = c(4L, 2L), X2 = c(4L, 3L), X3 = c(4L, 3L),
X4 = c(4L, 2L)), .Names = c("X1", "X2", "X3", "X4"), class = "data.frame", row.names = c("Number",
"Number.1"))
选择超出范围的行会创建 NA
行,然后 unlist
:
data.frame(X1 = c(NA, unlist(dat[1:3, ], use.names = FALSE)))
# X1
# 1 NA
# 2 4
# 3 2
# 4 NA
# 5 4
# 6 3
# 7 NA
# 8 4
# 9 3
# 10 NA
# 11 4
# 12 2
# 13 NA