r - 在 R 数据框中设置重复列名
问题描述
我有 2 个数据框 - df "A" 具有唯一的列名;并且 df "B" 具有来自 "A" 的这些唯一列名所属的组。例如 :
> A
ID1 ID2 ID3 ID4 ID5 ID6
1 0.5 0.2 0.0 0.6 0.8 0.2
2 0.1 0.3 0.1 0.4 0.0 0.4
3 1.2 1.1 1.4 1.5 1.9 1.3
4 1.1 1.3 1.5 1.9 1.0 1.1
> B
ID Group
ID1 Grp1
ID2 Grp2
ID3 Grp1
ID4 Grp1
ID5 Grp2
ID6 Grp2
我正在尝试转换“A”的列名,以便它们反映组名,而不是唯一 ID。但是,当我执行此转换时,R 会自动将 .1、.2、.. 后缀添加到阻碍我的下游分析的列名。
这是我的代码:
names = colnames(A)
colnames(A) <- as.character(B$Group[match(colnames(A),B$ID)])
counts = table(colnames(A))
to_keep = names(counts)[counts >= 1]
pData <- B[B$Group %in% to_keep,]
to_keep = which(colnames(A) %in% to_keep)
A <- A[,to_keep]
names <- names[to_keep]
让我知道如何解决这个问题!
谢谢 !
编辑:谢谢大家的帮助!在您的帮助下,我设法获得了非唯一的列名。我将在这里解释我的用例,所以也许你会明白我为什么要这样做。
我有一个 df "A" 这样一些列属于 grp1 而一些属于 grp2 。我希望能够生成一个训练集来训练算法。这个集合是通过随机抽取其中一些组并将它们混合起来创建的。代码是这样的:
names(A) <- B$Group[match(names(A), B$ID)]
counts = table(colnames(A))
training <- as.numeric(unlist(sapply(unique(colnames(A)), function(x) {
sample(which(colnames(A) %in% x), counts[x]/2) })))
对于此用例,欢迎使用任何替代方法。
谢谢 !
解决方案
也许这个?
names(A) = setNames(B$Group, B$ID)[names(A)]
这是基于您希望 A 中名为“ID1”的列变为名为“Grp1”的假设,依此类推。
我会保留这个,因为它是与其他答案不同的方法,但我也同意使用非唯一名称不是一个好习惯。
推荐阅读
- javascript - 有没有办法让 FullCalendar 成为后端引用的对象?ASP.NET C#
- pyautogui - centos Docker中如何使用Pyautogui自动化UI以及pyautogui的linux依赖在哪里下载
- javascript - 映射输入和 setstate onchange
- angular - 如何将 Angular 9 应用程序连接到本地主机上的 API
- r - R中的自动SARIMA模型
- javascript - 使用 Web Push 发送消息,如何发送订阅
- reactjs - 如何保护您的 api 免受受损客户端的侵害
- javascript - 无法使用 fetch 将数据从 react 发布到 nodejs
- python-3.x - 退出 stock.move.line 中的 lot_id,显示来自计算字段的相同值
- javascript - AudioWorklet 返回除节点外的处理数据,如何?