我有数据(不完全从PDF导入),所有数据都放在一个列中,某些行作为描述性标题。例如:
dfx <- data.frame(V1 = c("Box 1", "abcd10", "bcde15", "Box 2", "cdefg35", "jklm40", "nopq50", "rstu52"))
V1
1 Box 1
2 abcd10
3 bcde15
4 Box 2
5 cdefg35
6 jklm40
7 nopq50
8 rstu52
我想创建一个单独的列,其中每个观察值取其上方最近的标题的值。像这样:
V1 v2
1 abcd10 Box 1
2 bcde15 Box 1
3 cdefg35 Box 2
4 jklm40 Box 2
5 nopq50 Box 2
6 rstu52 Box 2
我尝试过的一切都没有使我接近。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:1)
通过R为底的想法可以是
i1 <- grepl('Box', dfx$V1)
dfx$new <- with(dfx, ave(V1, cumsum(i1), FUN = function(i) i[1]))
subset(dfx, !i1)
# V1 new
#2 abcd10 Box 1
#3 bcde15 Box 1
#5 cdefg35 Box 2
#6 jklm40 Box 2
#7 nopq50 Box 2
#8 rstu52 Box 2
答案 1 :(得分:0)
您也可以这样做:
*.tex
答案 2 :(得分:0)
创建一个V2
列,其Box行等于V1
,其他行等于NA
,然后使用na.locf0
填写NA。最后删除V1
框行。
library(zoo)
isBox <- grepl("Box", dfx$V1)
transform(dfx, V2 = na.locf0(replace(V1, !isBox, NA)))[ !isBox, ]
给予:
V1 V2
2 abcd10 Box 1
3 bcde15 Box 1
5 cdefg35 Box 2
6 jklm40 Box 2
7 nopq50 Box 2
8 rstu52 Box 2