Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将后缀附加到表中的名称列,以便在R中读取_R_Awk - Fatal编程技术网

将后缀附加到表中的名称列,以便在R中读取

将后缀附加到表中的名称列,以便在R中读取,r,awk,R,Awk,我有一张这样的桌子: Gene U2803 U2823 U2840 U2841 U2862 U2872 U2897 U2982 U2991 U2994 U2998 U2999 U3001 U3007 U3012 U2980 A1BG-AS 7.3159 9.3802 10.77 8.701 13.6066 8.3253 9.0556 9.8801 9.0776 11.2029 7.61 10.8403 9

我有一张这样的桌子:

Gene    U2803   U2823   U2840   U2841   U2862   U2872   U2897   U2982   U2991   U2994   U2998   U2999   U3001   U3007   U3012   U2980
A1BG-AS 7.3159  9.3802  10.77   8.701   13.6066 8.3253  9.0556  9.8801  9.0776  11.2029 7.61    10.8403 9.2378  12.1697 9.7482  5.5327
A1BG    7.4715  5.2955  10.2275 6.3606  10.1463 5.9968  6.2673  8.6119  6.153   6.7903  4.0843  13.0875 6.8167  8.3186  6.7643  5.14
A1CF    0   0   0   0   0.0026  0   0   0   0   0   0   0   0   0   0.0037  0
A2LD1   1.776   1.125   1.3508  1.2489  2.1252  2.1057  1.0177  1.6063  1.0053  0.9571  1.4972  1.3998  1.0935  2.4737  1.2063  1.7788
A2ML1   0.1024  0.092   0.0473  0.071   0.1227  0.2047  0.2481  0.1089  0.0499  0.1381  0.057   0.0953  0.0433  0.0651  0.0598  0.0434
A2M 5.4296  0.1688  2.4767  0.2507  0.5087  4.2835  2.2989  8.6027  3.1126  0.4565  0.167   2.9066  3.195   0.942   5.8904  6.7635
A4GALT  0.2918  11.5673 4.9554  0   1.6693  1.6301  0.4985  2.4444  0.6217  1.4638  3.2648  0.5773  3.1071  7.651   0.4068  5.133
A4GANLT 0   0   0   0   0.0575  0.1018  0   0.0422  0   0   0   0.0257  0.0276  0   0   0.0288
AAA1    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
AAA1    18.789  24.8681 29.8037 33.3986 37.8269 24.4719 21.1101 26.9985 21.9897 25
如果您注意到第1列中的两个基因具有相同的名称,AAA1和A4GALT。我如何给这些基因添加后缀,以便在阅读R中的表格时不会被识别为重复的名称

R或awk中的一个小示例将非常有用


谢谢。

这个awk为每个基因的出现增加一个新的数字

awk 'a[$1]{$1=$1"_"a[$1]}{a[$1]++}1' file
希望有帮助:)

前面的例子被窃听了

这实际上是按照所描述的那样工作的

awk 'a[$1]{a[$1]++}NF&&a[$1]{$1=$1"_"a[$1]}!a[$1]{a[$1]++}1' file
第一个值没有增加的原因是由于重命名$1的一个不可预见的副作用,$1在达到增加值时已被更改,因此新值将增加,而不是原始值

不管怎样,它现在起作用了:)


注:如果有人知道如何减少这一点,请告诉我:)

这很容易做到,因为在R中的步骤中阅读一篇文章

假设我们有一个像下面的“x”这样的文件

先将
行作为一列来阅读,然后从中开始工作

temp <- read.table(file=x, header = FALSE, fill = TRUE,
                   stringsAsFactors = FALSE)
temp
#   V1 V2 V3 V4
# 1  A  1  2 NA
# 2  B  3  4 NA
# 3  C  5  6 13
# 4  A  7  8 NA
# 5  B  9 10 NA
# 6  A 11 12 NA
相反,请查看可用于创建唯一名称的函数之一,例如
make.names
make.unique
。后者似乎更适合这种情况

make.names(temp$V1, unique=TRUE)
# [1] "A"   "B"   "C"   "A.1" "B.1" "A.2"
make.unique(temp$V1, sep="_")
# [1] "A"   "B"   "C"   "A_1" "B_1" "A_2"
您可以将其合并为以下内容:

rownames(temp) <- make.unique(temp$V1, sep="_")
temp$V1 <- NULL
temp
#     V2 V3 V4
# A    1  2 NA
# B    3  4 NA
# C    5  6 13
# A_1  7  8 NA
# B_1  9 10 NA
# A_2 11 12 NA

rownames(temp)R应该能够毫无问题地处理在中读取此内容。如果您想更改“基因”列中的值,使其在复制时具有唯一值,您可以尝试使用
make.unique
函数。您想要什么后缀?像u(下划线)这样的后缀后跟一个数字是什么意思?什么标签分离?
temp1 <- as.matrix(temp[-1])
rownames(temp1) <- temp[, 1]
temp1
#   V2 V3 V4
# A  1  2 NA
# B  3  4 NA
# C  5  6 13
# A  7  8 NA
# B  9 10 NA
# A 11 12 NA
make.names(temp$V1, unique=TRUE)
# [1] "A"   "B"   "C"   "A.1" "B.1" "A.2"
make.unique(temp$V1, sep="_")
# [1] "A"   "B"   "C"   "A_1" "B_1" "A_2"
rownames(temp) <- make.unique(temp$V1, sep="_")
temp$V1 <- NULL
temp
#     V2 V3 V4
# A    1  2 NA
# B    3  4 NA
# C    5  6 13
# A_1  7  8 NA
# B_1  9 10 NA
# A_2 11 12 NA