добавить значения столбца в другой столбец - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть вкладка 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 были бы лучше, если это возможно ...

Спасибо

Ответы [ 3 ]

1 голос
/ 01 апреля 2019
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")
1 голос
/ 01 апреля 2019

С 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")
1 голос
/ 01 апреля 2019

Если вы хотите использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...