我有这个任务。杂志文章涵盖各种主题。我们分配一个数值来反映特定主题和文章之间的关系(链接)的强度。将原始数据重新格式化为更方便的演示文稿,如下所示。
INPUT DATA (tab-separated)
Theme Article Link_strength
A aaa 2
A bbb 8
B bbb 7
C aaa 3
OUTPUT DATA
Article Theme_A Theme_B Theme_C
aaa 2 0 3
bbb 8 7 0
我试过R,但数据大小是个问题 所以,我需要弄清楚awk命令可能会有所帮助。但是怎么做?
答案 0 :(得分:2)
尝试以下方法:
awk -f format.awk input.txt
其中input.txt
是您的输入数据文件,format.awk
是
BEGIN {
OFS="\t"
}
NR > 3 {
themes[$1]++
ka[$2]++
art[$2,$1]=$3
}
END {
printf "%s%s", "Article",OFS
for (j in themes) {
printf "Theme_%s%s", j, OFS
}
printf "\n"
for (i in ka) {
printf "%s%s", i, OFS
for (j in themes) {
printf "%d%s", art[i,j],OFS
}
printf "\n"
}
}
答案 1 :(得分:0)
R中的解决方案:
library(reshape)
cast(df,Article ~ Theme,fill=0)
输出
Article A B C
1 aaa 2 0 3
2 bbb 8 7 0
使用reshape2
代替相同的事情:
library(reshape2)
dcast(df,Article ~ Theme,value.var='Link_strength',fill=0)