我有一个txt文件标签,其分隔符如下:
1 aaa apple
1 bbb banana
3 ccc grape
5 ddd orange
我想创建另一个txt文件,但是这次将原始txt文件的第一列值附加在最后一列(在本例中为第三列)后面,并带有下划线:
1 aaa 1_apple
1 bbb 1_banana
3 ccc 3_grape
5 ddd 5_orange
我没有任何编程语言偏好,但是R和Unix可能会更好...
谢谢
答案 0 :(得分:1)
如果您想使用bash
,可以尝试:
$ awk '{print $1, $2, $1"_"$3}' file.txt > file2.txt
$ cat file2.txt
1 aaa 1_apple
1 bbb 1_banana
3 ccc 3_grape
5 ddd 5_orange
如果要在R
中进行操作,请尝试使用以下R代码:
a <- read_table("file.txt", col_names = FALSE)
a$X3 <- paste(a$X1, a$X3, sep = "_")
write_delim(a, "file2.txt", col_names = FALSE)
文件应如下所示:
$ cat file2.txt
1 aaa 1_apple
1 bbb 1_banana
3 ccc 3_grape
5 ddd 5_orange
答案 1 :(得分:1)
df$NewColumn<-paste0(df[,1],"_",df[,ncol(df)])
df
V1 V2 V3 NewColumn
1 1 aaa apple 1_apple
2 1 bbb banana 1_banana
3 3 ccc grape 3_grape
4 5 ddd orange 5_orange
写入.txt
write.table(tidyr::unite(df,New_col,"V1","V3"),"test.txt")
使用tidyr
:
tidyr::unite(df,New_col,"V1","V3")
数据:
df<-read.table(text="1 aaa apple
1 bbb banana
3 ccc grape
5 ddd orange")
答案 2 :(得分:1)
使用R,我们可以尝试使用read.csv
和write.csv
,并进行一些字符串操作:
df <- read.csv(file="path/to/your/file.txt") # one column for entire value
lines <- sapply(df[,1], function(x) {
parts <- strsplit(x, " ")[[1]]
parts[3] <- paste0(parts[1], "_", parts[3])
return(paste0(parts, collapse=" "))
})
write.csv(rbind(lines), file="path/to/your/output.txt")