簡體   English   中英

如何通過字符串搜索數據框的列名並將整個列名替換為新的列名(用於下游 PCA)

[英]How to search column names of a data frame by a character string and replace the entire column name with a new one (for downstream PCA)

我正在嘗試創建一個 PCA 圖,所以我想按批次重新組合我的列(以便我使用我的列名作為因素)。 我已經閱讀了這兩個問題( )並嘗試了他們的建議,但它沒有正常工作(或者我做錯了什么)。

我所擁有的是一個包含幾千列的數據框,其示例名稱如下:

Measure    Br_LV_05_BC1_1_POS  Br_Lv_05_BC1_2_POS Br_Lv_05_BC1_3_POS Br_Lv_05_LR_1_POS Br_Lv_05_LR_2_POS
500               3000                8000                5000              1000              2000
600               4000                4000                4000              8000              8000 
700               5000                6000                4000              9000              8000 
800               6000                7000                8000              2000              1000

我想要做的是搜索並替換包含字符串“BC1”的所有列,並將該 BC1 重命名為“LR”。 通過這種方式,我可以讓 R 使用這些列作為 PCA 的因子,而不是 PCA 將每個列作為單個樣本進行測量。

Measure  BC1    BC1     BC1     LR      LR
500      3000   8000    5000    1000    2000
600      4000   4000    4000    8000    8000 
700      5000   6000    4000    9000    8000 
800      6000   7000    8000    2000    1000

這樣我就可以轉置數據(如果需要)並將我的 PCA 與樣本作為因子進行聚類。 我希望我的想法是正確的。 非常感謝您的幫助。

這是一個帶有subbase R選項,其中我們從列名中提取第 4 個單詞並更新它

names(df1)[-1] <-  sub("^([^_]+_){3}([^_]+)_.*", "\\2", names(df1)[-1])
names(df1)[-1]
#[1] "BC1" "BC1" "BC1" "LR"  "LR" 

或者另一個選項是strsplit at _並提取第 4 個元素

names(df1)[-1] <- sapply(strsplit(names(df1)[-1], "_"), `[`, 4)

我們也可以用wordstringr

library(stringr)
names(df1)[-1] <- word(names(df1)[-1], 4, sep="_")

注意:最好不要有重復的列名,無論如何data.frame通過make.uniquedata.framemake.unique

數據

df1 <- structure(list(Measure = c(500L, 600L, 700L, 800L), Br_LV_05_BC1_1_POS = c(3000L, 
4000L, 5000L, 6000L), Br_Lv_05_BC1_2_POS = c(8000L, 4000L, 6000L, 
7000L), Br_Lv_05_BC1_3_POS = c(5000L, 4000L, 4000L, 8000L), Br_Lv_05_LR_1_POS = c(1000L, 
8000L, 9000L, 2000L), Br_Lv_05_LR_2_POS = c(2000L, 8000L, 8000L, 
1000L)), class = "data.frame", row.names = c(NA, -4L))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM