我有两个cols这样的数据库
我想获得1列c(10,12,13,22,20,34)
我怎样才能在R?
中这样做答案 0 :(得分:0)
假设第一列包含空格(""
)且character
类,我们将空格转换为NA
并使用na.locf
将NA元素替换为非NA前一个元素,然后paste
输出第二列并创建一个新列(“colN”)。
library(zoo)
library(data.table)
setDT(df1)[col1=="", col1:= NA][, colN := as.numeric(paste0(na.locf(col1), col2))]
df1
# col1 col2 colN
#1: 1 0 10
#2: NA 2 12
#3: NA 3 13
#4: 2 2 22
#5: NA 0 20
#6: 3 4 34
注意到OP在编辑帖子时对第一列进行了更改,即现在空白(""
)神秘地改为na
(这不是真正的NA)。在这种情况下,在使用read.csv/read.table
阅读数据集时,na.strings = "na"
可用于自动将“na”转换为NA
或其他
setDT(df1)[col1=="na", col1 := NA][, colN := as.numeric(paste0(na.locf(col1, col2))]
df1 <- structure(list(col1 = c("1", "", "", "2", "", "3"), col2 = c(0L,
2L, 3L, 2L, 0L, 4L)), .Names = c("col1", "col2"), row.names = c(NA,
-6L), class = "data.frame")