我对R很陌生,所以请问我问的内容是否有些琐碎。 因此,我从图像分析程序中获取了一个包含如下内容的csv文件:
FRAME OBJECT_IS_IN_TARGET_AREA
1 0
2 1
5 1
6 0
7 0
... ...
241 1
如您所见,第3帧和第4帧没有行,可能直到第241帧为止都缺少行。现在,有一种方法可以用丢失的行来补充数据帧以接收连续的数字序列范围从1到241,并为OBJECT_IS_IN_TARGET_AREA指定每个补充行N / A?数据框最后应该像这样:
FRAME OBJECT_IS_IN_TARGET_AREA
1 0
2 1
3 N/A
4 N/A
5 1
6 0
7 0
... ...
241 1
遗憾的是,无法直接从图像分析程序获取这些值,因此我必须手动添加它们。由于我有很多这些序列,所以这将是一件非常潮人的工作。这就是为什么我选择R。希望您能帮助我。
非常感谢,
E。
答案 0 :(得分:4)
您可以使用库complete
中的tidyr
。假设您的数据框名称为df,
library(tidyr)
df %>% complete(FRAME=c(1:241))
应该完成预期的工作。
答案 1 :(得分:2)
我认为您可以使用baseR
:
Frame <- seq(241)
df <- data.frame(Frame=Frame)
df$OBJECT_IS_IN_TARGET_AREA <- ifelse(df$Frame %in% yourCSV$Frame, yourCSV$OBJECT_IS_IN_TARGET_AREA, NA)
现在df
将成为您的补充数据帧,其中NA
用于Frame
中不在的对象,而OBJECT_IS_IN_TARGET_AREA
的值用于csv Frame
中的值。
yourCSV
dataframe
yourCSV <- data.frame(Frame=c(1,2,3,10,241), OBJECT_IS_IN_TARGET_AREA=c(1,2,3,4,5))
答案 2 :(得分:1)
Base R解决方案:
df <- merge(data.frame(FRAME = c(1:nrow(df))), df, by = "FRAME", all.x = TRUE)