如何解决如果列的值以 R 数据
如果列的值 (GID) 以字符 "N" 开头,如果 ColB 为空,如何将其替换为 ColB R编程中的Dataframe
代码:
DataFile <- extract_tables("new.pdf",pages = c(87),method = "stream",output = "data.frame",guess = TRUE)
DataFrame<-as.data.frame(DataFile)
#removing No. and A# from columns
df2<-subset(DataFrame,Group!="No." & Group!="A#")
输出:
GID ColA ColB
1 2 2
2 3 4
3 5 4
4 6 5
5 6 5
NG1 8
MG2 8 1
MG3 8 1
NG4 8
预期输出
GID ColA ColB
1 2 2
2 3 4
3 5 4
4 6 5
5 6 5
NG1 8 N
MG2 8 1
MG3 8 1
NG4 8 N
解决方法
我们可以指定一个条件,例如
i1 <- with(df1,substr(GID,1,1) == 'N' & ColB == "")
df1$ColB[i1] <- "N"
或使用 grepl
i1 <- with(df1,grepl("^N",GID) & ColB == "")
df1$ColB[i1] <- "N"
如果我们想替换任何一列
i1 <- with(df1,GID))
nm1 <- setdiff(names(df1),"GID")
df1[nm1] <- lapply(df1[nm1],function(x) replace(x,i1 & x == "","N"))
-输出
df1
# GID ColA ColB
#1 1 2 2
#2 2 3 4
#3 3 5 4
#4 4 6 5
#5 5 6 5
#6 NG1 8 N
#7 MG2 8 1
#8 MG3 8 1
#9 NG4 8 N
数据
df1 <- structure(list(GID = c("1","2","3","4","5","NG1","MG2","MG3","NG4"),ColA = c(2L,3L,5L,6L,8L,8L),ColB = c("2","","1","")),row.names = c(NA,-9L),class = "data.frame")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。