我有这样的数据,其中A*表示以时间格式(01:01)为列名的位置,而1C或9D等行名表示单个ID。
structure(list(V1 = c("1C", "9D", "9F", "9H", "9S", "9T", "9Y"
), `A*01:01` = c(NA, NA, "1", NA, NA, NA, NA), `A*02:01` = c(NA,
NA, "1", NA, NA, NA, NA), `A*02:02` = c(NA, NA, "1", NA, NA,
NA, NA), `A*02:03` = c(NA, NA, "1", NA, NA, NA, NA), `A*02:05` = c(NA,
NA, NA, NA, NA, NA, "1"), `A*02:06` = c(NA, NA, NA, NA, NA, NA,
"1"), `A*03:01` = c(NA, NA, "1", NA, NA, NA, NA), `A*11:01` = c(NA,
NA, NA, NA, NA, NA, "1"), `A*11:02` = c(NA, NA, NA, NA, NA, NA,
"1"), `A*23:01` = c(NA, NA, NA, NA, "1", NA, NA), `A*23:02` = c(NA,
NA, NA, NA, "1", NA, NA), `A*24:02` = c(NA, NA, NA, NA, "1",
NA, NA), `A*24:03` = c(NA, NA, NA, NA, "1", NA, NA), `A*25:01` = c(NA,
NA, NA, NA, NA, NA, "1"), `A*26:01` = c(NA, NA, NA, NA, NA, NA,
"1"), `A*29:01` = c(NA, NA, NA, NA, NA, "1", NA), `A*29:02` = c(NA,
NA, NA, NA, NA, "1", NA), `A*30:01` = c(NA, NA, NA, NA, "1",
NA, NA), `A*30:02` = c(NA, NA, NA, NA, "1", NA, NA), `A*31:01` = c(NA,
NA, NA, NA, NA, "1", NA), `A*32:01` = c(NA, NA, "1", NA, NA,
NA, NA), `A*33:01` = c(NA, NA, NA, NA, NA, "1", NA), `A*33:03` = c(NA,
NA, NA, NA, NA, "1", NA), `A*34:01` = c(NA, NA, NA, NA, NA, NA,
"1"), `A*34:02` = c(NA, NA, NA, NA, NA, NA, "1"), `A*36:01` = c(NA,
NA, "1", NA, NA, NA, NA), `A*43:01` = c(NA, NA, NA, NA, NA, NA,
"1"), `A*66:01` = c(NA, NA, NA, NA, NA, NA, "1"), `A*66:02` = c(NA,
NA, NA, NA, NA, NA, "1"), `A*68:01` = c(NA, NA, NA, NA, NA, NA,
"1"), `A*68:02` = c(NA, NA, NA, NA, NA, NA, "1"), `A*69:01` = c(NA,
NA, NA, NA, NA, NA, "1"), `A*74:01` = c(NA, NA, "1", NA, NA,
NA, NA), `A*80:01` = c(NA, NA, "1", NA, NA, NA, NA), `B*07:02` = c(NA,
NA, NA, NA, NA, NA, "1"), `B*07:03` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*08:01` = c(NA, "1", NA, NA, NA, NA, NA), `B*13:01` = c(NA,
NA, NA, NA, NA, NA, "1"), `B*13:02` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*14:01` = c(NA, NA, NA, NA, NA, NA, "1"), `B*14:02` = c(NA,
NA, NA, NA, NA, NA, "1"), `B*14:05` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*14:06` = c(NA, NA, NA, NA, NA, NA, "1"), `B*15:01` = c(NA,
NA, NA, NA, NA, NA, "1"), `B*15:02` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*15:03` = c(NA, NA, NA, NA, NA, NA, "1"), `B*15:10` = c(NA,
NA, NA, NA, NA, NA, "1"), `B*15:11` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*15:12` = c(NA, NA, NA, NA, NA, NA, "1"), `B*15:13` = c(NA,
NA, NA, NA, NA, NA, "1"), `B*15:16` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*15:18` = c(NA, NA, NA, NA, NA, NA, "1"), `B*18:01` = c(NA,
NA, NA, "1", NA, NA, NA), `B*27:03` = c(NA, NA, NA, "1", NA,
NA, NA), `B*27:05` = c(NA, NA, NA, "1", NA, NA, NA), `B*27:08` = c(NA,
NA, NA, "1", NA, NA, NA), `B*35:01` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*35:08` = c(NA, NA, NA, NA, NA, NA, "1"), `B*37:01` = c(NA,
NA, NA, "1", NA, NA, NA), `B*38:01` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*39:01` = c(NA, NA, NA, NA, NA, NA, "1"), `B*39:05` = c(NA,
NA, NA, NA, NA, NA, "1"), `B*40:01` = c(NA, NA, NA, "1", NA,
NA, NA), `B*40:02` = c(NA, NA, NA, "1", NA, NA, NA), `B*40:05` = c(NA,
NA, NA, "1", NA, NA, NA), `B*40:06` = c(NA, NA, NA, "1", NA,
NA, NA), `B*41:01` = c(NA, NA, NA, "1", NA, NA, NA), `B*41:02` = c(NA,
NA, NA, "1", NA, NA, NA), `B*42:01` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*44:02` = c(NA, NA, NA, NA, NA, NA, "1"), `B*44:03` = c(NA,
NA, NA, NA, NA, NA, "1"), `B*45:01` = c(NA, NA, NA, "1", NA,
NA, NA), `B*46:01` = c(NA, NA, NA, NA, NA, NA, "1"), `B*47:01` = c(NA,
NA, NA, NA, NA, NA, "1"), `B*48:01` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*49:01` = c(NA, NA, NA, "1", NA, NA, NA), `B*50:01` = c(NA,
NA, NA, "1", NA, NA, NA), `B*51:01` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*51:02` = c(NA, NA, NA, NA, NA, NA, "1"), `B*52:01` = c(NA,
NA, NA, NA, NA, NA, "1"), `B*53:01` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*54:01` = c(NA, NA, NA, NA, NA, NA, "1"), `B*55:01` = c(NA,
NA, NA, NA, NA, NA, "1"), `B*56:01` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*57:01` = c(NA, NA, NA, NA, NA, NA, "1"), `B*57:03` = c(NA,
NA, NA, NA, NA, NA, "1"), `B*58:01` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*59:01` = c(NA, NA, NA, NA, NA, NA, "1"), `B*67:01` = c(NA,
NA, NA, NA, NA, NA, "1"), `B*73:01` = c(NA, NA, NA, "1", NA,
NA, NA), `B*78:01` = c(NA, NA, NA, NA, NA, NA, "1"), `B*81:01` = c(NA,
NA, NA, NA, NA, NA, "1"), `B*82:01` = c(NA, NA, NA, NA, NA, NA,
"1"), `B*82:02` = c(NA, NA, NA, NA, NA, NA, "1"), `C*01:02` = c("1",
NA, "1", NA, NA, NA, NA), `C*02:02` = c("1", NA, NA, NA, NA,
NA, "1"), `C*02:10` = c("1", NA, NA, NA, NA, NA, "1"), `C*03:02` = c(NA,
NA, NA, NA, NA, NA, "1"), `C*03:03` = c(NA, NA, NA, NA, NA, NA,
"1"), `C*03:04` = c(NA, NA, NA, NA, NA, NA, "1"), `C*04:01` = c(NA,
NA, NA, NA, "1", NA, NA), `C*04:03` = c(NA, NA, NA, NA, NA, NA,
"1"), `C*05:01` = c("1", NA, NA, NA, NA, NA, "1"), `C*06:02` = c("1",
"1", NA, NA, NA, NA, NA), `C*07:01` = c("1", "1", NA, NA, NA,
NA, NA), `C*07:02` = c("1", "1", NA, NA, NA, NA, NA), `C*07:04` = c("1",
"1", NA, NA, NA, NA, NA), `C*08:01` = c("1", NA, NA, NA, NA,
NA, "1"), `C*08:02` = c("1", NA, NA, NA, NA, NA, "1"), `C*12:02` = c("1",
NA, NA, NA, NA, NA, "1"), `C*12:03` = c("1", NA, NA, NA, NA,
NA, "1"), `C*14:02` = c("1", NA, NA, NA, "1", NA, NA), `C*15:02` = c("1",
NA, NA, NA, NA, NA, "1"), `C*16:01` = c("1", NA, NA, NA, NA,
NA, "1"), `C*17:01` = c(NA, NA, NA, NA, NA, NA, "1"), `C*18:01` = c("1",
"1", NA, NA, NA, NA, NA), `C*18:02` = c("1", "1", NA, NA, NA,
NA, NA)), row.names = c("1C", "9D", "9F", "9H", "9S", "9T", "9Y"
), class = "data.frame")
我正在使用以下代码来处理数据,这对于第2列来说效果很好。但我的实际数据中有16000列和400行。我想在R中使用“for loop”或“sapply”来执行处理。非常感谢快速解决方案。
LA <- dat[!is.na(dat[,2]),]
LA<-LA[,1]
res <- gsub("[[:digit:]]","",LA)
pos <- gsub("[[:alpha:]]","",LA)
LA_sep <- data.frame(res, pos)
LA_sep$res <- paste0(LA_sep$res, "&")
LA_sep$pos <- paste0(LA_sep$pos, "&")
LA_sep <- as.data.frame(t(LA_sep))
LA_sep <- apply(LA_sep[1:ncol(LA_sep)], 1, function(x) paste(na.omit(x), collapse = "")) ## nrow(ma) ## ncol(ma) ## NCOL(1:12) ## NROW(1:12)
write.csv(LA_sep, "2.csv")
当我在大数据上运行上述代码时,我得到了第二列(A)的以下输出
01:01). 首先,我想提取列V1值,其中列2、3、4。。以此类推,每行的值为1。然后拆分数字和字符,并保存为“res”和“pos”,由“&”分隔对于每列值为1的每一行(A
01:01,A*02:01,A02:02,…)
资源(&A);K&并购;问题(&A);&R&&R&不适用(&A);&不适用(&A);不适用(&A);H和;不适用(&A);并购;H和;S&&不适用(&A);T&不适用(&A);不适用(&A);G&T&G&T&T&TL&D&&输入;&输入;是(&A);&R&D&并购;&输入;K&K&R&&H和;H和;&H和;&R&R&R&G&D&G&P&&输入;&L
位置9和;44和;45和;62和;63和;65及;69和;65及;66和;69和;66和;66和;70及;66和;67和;70及;71和;76和;77和;80及;77和;77和;79和;80及;79和;80及;80及;80及;81和;90及;95及;97&99&109和;114和;116和;138和;142和;144和;144和;145和;149及;151&151&152和;151&152和;156和;163和;163和;167&166&167&193及;194及;275及;276
因此,手动或在没有大数据循环的情况下为每一列执行此操作非常困难。每个输出都应作为列名保存为单独的文件。