我有一個大型數據框,其中有多個列代表針對不同個人測量的不同變量。列的名稱始終以數字開頭(例如1:18)。我想爲df子集併爲每個人創建separete dfs。這是一個例子:基於列名的第一個字母的子集數據框
x <- as.data.frame(matrix(nrow=10,ncol=18))
colnames(x) <- paste(1:18, 'col', sep="")
我的真實DF的列名是個人ID,變量名,和該措施的數量的組合物(I了每個變量的3次測量)。因此,例如我有個人1的措施b(身體),然後在df我會有3列名爲:1b1,1b2,1b3。最後我有10個不同的區域(身體,頭部,尾巴,尾巴,背部,側腹,腹部,喉嚨,前臂,腿部)。因此,對於每個人我有30列(10個區域×每個區域3個措施)。所以我有多個變量,從不同的數字開始,我想根據它們的唯一數字進行子集分析。我試着用grep:
partialName <- 1
df2<- x[,grep(partialName, colnames(x))]
colnames(x)
[1] "1col" "2col" "3col" "4col" "5col" "6col" "7col" "8col" "9col" "10col"
"11col" "12col" "13col" "14col" "15col" "16col" "17col" "18col"
我在這裏的問題,因爲你可以看到它不會將個人分開,因爲1和10的子集。換句話說,這將選擇以1開頭的每個人。 最終,我想要做的是循環所有個人(1:18),爲每個人創建新的dfs。
歡迎SO。你能否提供'colnames'並澄清你的期望? – Llopis
感謝您的回覆Llopis。好。在上面的例子中,我的姓氏是:[1]「1col」「2col」「3col」「4col」「5col」「6col」「7col」「8col」「9col」「10col」「11col」「12col」「13col」 「14col」「15col」「16col」「17col」「18col」 我想返回不同的dfs子集名稱以相同數字開頭的列。在上面的例子中,我會有18個新的dfs,每個有1列,1col,2col,3cols等等。明白了嗎? – costagc
@ user3293163將這些內容編輯到問題中,而不是作爲評論發佈。 –