original page : http://ja.doukaku.org/209/
タブ区切りのデータを読み込んで操作をし書き出す方法を教えてください。 読み込み・書き出しの方法は任意とします。
与えられるデータは:
* レコードの区切りは改行、カラムの区切りはタブです。
* 最初のレコードはヘッダで、カラムの名前が書いてあります。
* それ以降はデータで、第1,4カラムは整数値、第2,3カラムは文字列値です。
この入力データに対して以下の操作をしたものを書き出してください:
* 第1カラムの値でデータを昇順にソートする。
* 第2カラムと第3カラムをヘッダを含めて入れ替える。
* 第4カラムの値にそれぞれ1を加える。
入力の例:
ID Surname Forename Age
1 Sato Hanako 17
0 Suzuki Taro 18
...出力の例:
ID Forename Surname Age
0 Taro Suzuki 19
1 Hanako Sato 18
...
#7729
original page : http://ja.doukaku.org/comment/7729/
統計処理言語だけあって、Rでは、この手のデータ処理は非常に直感的です。
# タブ区切りのデータを読み込む d <- read.delim("input.tsv") # 第1カラムの値でデータを昇順にソートする。 d <- d[sort.list(d[,1]),] # 第2カラムと第3カラムをヘッダを含めて入れ替える。 d[,c(2,3)] <- d[,c(3,2)] colnames(d)[c(2,3)] <- colnames(d)[c(3,2)] # 第4カラムの値にそれぞれ1を加える。 d[,4] <- d[,4] + 1 # 書き出す write.table(d, "output.tsv", sep="\t", quote=F, row.names=F)