【发布时间】:2012-12-17 23:19:51
【问题描述】:
我有一个包含 3 列的 data.frame。第三列有数字或字符类型“1:5”、“30:20”、“1:10”等。我试图将具有这些字符的值分成两部分,然后将它们分开,但我我被这个困住了:
datos[,3]=gsub(":", " ", datos[,3])
if (datos[,1]==TRUE)
{
s=datos[,3]
chr.pos <- which(unlist(strsplit(s,NULL)) == " ")
chr.count <- length(chr.pos)
one=as.numeric(substr(s,1,chr.pos-1))
two=as.numeric(substr(s,chr.pos+1,nchar(as.character(s))))
datos[,3]=round(two/one,5)
}
【问题讨论】:
-
当你说
data.table时,你是指data.table还是只是data.frame -
谢谢 我的意思是我使用了 read.csv 指令,但老实说我不太清楚两者之间的区别。
-
如果您使用 read.csv,那么您就有一个“数据框”。请更仔细地研究您的介绍性材料。
-
谢谢你是对的。由于第三列包含数字数据与这些字符串与列“混合”,因此我很难找到适用于两者的正确命令。
-
您的第三列不能包含“混合”数据。 data.frames 的列只能是一种类型。但是,如果您有一些行是字符串 1 (
"1"),而其他行是字符串"1:5",您希望如何处理这些情况?
标签: r