我有两个不同的文件,它们对数据引用使用略有不同的名称。在file1中它看起来像ND-1234,而file2它显示为ND 1234.问题是数据是空白分隔的,所以我在file2中的标识符将创建2列。我知道我可以将file2导入data.frame然后操纵它来组合这些列,但它是一个相当大的文件,所以我宁愿在导入时执行此操作。
所以,我有两个问题:
1)我可以在导入时强制file2组合第1列和第1列。 2创建看起来像ND-1234的数据? (请注意,这还需要在两列数据之间插入' - ')
2)如果可以的话,以这种方式做得更快或者像我之前那样使用后期处理?
以下是数据的一些示例:
FILE1:
1 2 3 4 5 6
-----------------
ND-1234 1 A C T G
ND-412 1 T C A A
FILE2:
1 2 3 4
----------------
ND 1234 1.23 xyz
ND 412 0.23 abc
WHAT I WANT is to import file2 to look like this:
1 2 3
----------------
ND-1234 1.23 xyz
ND-412 0.23 abc
答案 0 :(得分:4)
我不认为在导入数据时可以直接使用。但是,您可以将这些值粘贴在一起。
示例:
# Sample:
df <- data.frame(
var1 = c('ND','ND'),
var2 = c(1234,412),
var3 = c(1.23, 0.23),
var4 = c('xyz','abc'),
stringsAsFactors=F
)
# Paste the values together, and store them in a new column:
df$var5 <- paste(df$var1, df$var2, sep='-')
# Get the desired columns:
df[,c('var5','var2','var3','var4')]
## var5 var2 var3 var4
##1 ND-1234 1234 1.23 xyz
##2 ND-412 412 0.23 abc
另一种可能的解决方案(但可能是它的过度杀伤)是使用sqldf
包:
library(sqldf)
sqldf("select var1 || '-' || cast(var2 as int) as new_var, var3, var4 from df")
## new_var var3 var4
##1 ND-1234 1.23 xyz
##2 ND-412 0.23 abc
||
运算符用于连接字符串(sqldf
使用SQLite作为&#34;后端&#34;)。我将var2
转换为整数,以防止结果出现小数位。