我的R代码有问题。起初我有一个数据框(df
),其中一列由数值和向量组成。这些向量还包含数值。这是数据帧的某些行的示例:
1. 60011000
2. 60523000
4. 60490000
5. 60599000
6. c("60741000", "60740000", "60742000")
7. 60647000
8. c("60766000", "60767000")
9. c("60563000", "60652000")
在列表中,您可以看到有一些行(6,8和9)包含向量元素。我想将向量中的元素连接到一个元素。 例如,第6行矢量的结果应如下所示:
607410006074000060742000
第8行的结果应如下所示
6076600060767000
我的数据框有超过30,000行,所以我不可能手动完成。
你能帮我解决我的问题吗?行数不会改变很重要。 非常感谢,请原谅我犯的错误。我不是母语人士。
答案 0 :(得分:1)
数据:
dat <- read.table(text='60011000
60523000
60490000
60599000
c("60741000", "60740000", "60742000")
60647000
c("60766000", "60767000")
c("60563000", "60652000")', sep = "\t")
dat
# V1
# 1 60011000
# 2 60523000
# 3 60490000
# 4 60599000
# 5 c(60741000, 60740000, 60742000)
# 6 60647000
# 7 c(60766000, 60767000)
# 8 c(60563000, 60652000)
您可以使用gsub
将所有非数字字符替换为空字符串。
dat$V1 <- gsub("[^0-9]+", "", dat$V1)
dat
# V1
# 1 60011000
# 2 60523000
# 3 60490000
# 4 60599000
# 5 607410006074000060742000
# 6 60647000
# 7 6076600060767000
# 8 6056300060652000
答案 1 :(得分:0)
你可以这样做:
df=data.frame(a=c(1,2,3,4,'c("60741000", "60740000", "60742000")'),
b=c(1,2,3,4,5),
stringsAsFactors = F)
> df
a b
1 1 1
2 2 2
3 3 3
4 4 4
5 c("60741000", "60740000", "60742000") 5
df[,"a"]=sapply(df[,"a"],function(x) paste(eval(parse(text=x)),collapse = ""))
> df
a b
1 1 1
2 2 2
3 3 3
4 4 4
5 607410006074000060742000 5
答案 2 :(得分:0)
你走了; (看起来有人打我一拳)
df <- read.table("df.txt",header=F,)
df
# V1
# 1 123
# 2 12
# 3 c("1","55","6")
# 4 356
# 5 c("99","55","3")
df[,1] <- as.numeric(as.character(gsub("[^0-9]","",df[,1])))
df
# V1
# 1 123
# 2 12
# 3 1556
# 4 356
# 5 99553