Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将不同数据帧中的重复行名称合并到R中的一个数据帧时保持不变

将不同数据帧中的重复行名称合并到R中的一个数据帧时保持不变
EN

Stack Overflow用户
提问于 2017-01-13 05:34:13
回答 2查看 2.8K关注 0票数 0

我有三个数据帧df1df2df3

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df1
     Freq
Yes    10
No      2

df2 
     Freq
Yes     5
No      7

df2 
     Freq
Yes     5
No      7

我把它合并到了df

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df1 <- data.frame(Freq= c(10,2))
df2 <- data.frame(Freq= c(5,7))
df3 <- data.frame(Freq= c(9,3))
rownames(df1) <- c("Yes","No")
rownames(df2) <- c("Yes","No")
rownames(df3) <- c("Yes","No")

df <- data.frame(rbind(df1,df2,df3))
df
       Freq
Yes      10
No        2
Yes1      5
No1       7
Yes2      9
No2       3

现在,如果您看到df,每当它发现重复的行名时,它就会在它旁边粘贴一个索引。

如何删除重复名称的索引,并将其保留在第一位?然后,我将rownames(df)更改为df中的第一列,列名为Answer

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 library(tibble)
 df <- rownames_to_column(df,"Answer")

   Answer   Freq
      Yes     10
       No      2
     Yes1      5
      No1      7
     Yes2      9
      No2      3

期望的结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Answer   Freq
      Yes     10
       No      2
      Yes      5
       No      7
      Yes      9
       No      3
EN

回答 2

Stack Overflow用户

发布于 2017-01-13 16:15:08

虽然您可以通过正则表达式删除索引(参见上面的注释),但是您可以在rbind之前调用rownames_to_column来避免这个问题。purrr::map_df非常容易做到这一点,因为它是lapply的一个版本,它将结果简化为一个data.frame。因此,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(tidyverse)    # contains both tibble and purrr

list(df1, df2, df3) %>% map_df(rownames_to_column, 'Answer')

##   Answer Freq
## 1    Yes   10
## 2     No    2
## 3    Yes    5
## 4     No    7
## 5    Yes    9
## 6     No    3

您还可以使用purrr的简写匿名函数语法:~rownames_to_column(.x, 'Answer')或更传统的语法:map_df(list(df1, df2, df3), function(x){rownames_to_column(x, 'Answer')}),所有这些语法都做同样的事情。

如果你想用R做同样的事情,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
do.call(rbind, lapply(list(df1, df2, df3), function(x){
    x$Answer <- rownames(x); 
    rownames(x) <- NULL; 
    x
}))

返回相同的内容。

如果您想要添加一个标识符列,其中的行来自哪个data.frame,则向map_df.id参数(其工作方式类似于dplyr::bind_rows中的参数)传递此类列的名称,就像rownames_to_column一样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list(one = df1, two = df2, three = df3) %>% map_df(rownames_to_column, "Answer", .id = "df")

##      df Answer Freq
## 1   one    Yes   10
## 2   one     No    2
## 3   two    Yes    5
## 4   two     No    7
## 5 three    Yes    9
## 6 three     No    3

如果您没有在列表中提供名称,.id将获取默认值,即数字字符串。如果您愿意,可以进行转换。

票数 1
EN

Stack Overflow用户

发布于 2017-01-16 04:29:36

我们可以使用data.table做到这一点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(data.table)
rbindlist(lapply(mget(paste0("df", 1:3)),
        function(x) transform(x, Answer = row.names(x))[2:1]))
#   Answer Freq
#1:    Yes   10
#2:     No    2
#3:    Yes    5
#4:     No    7
#5:    Yes    9
#6:     No    3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41627967

复制
相关文章
解决 git push Failed to connect to 127.0.0.1 port 45463: 拒绝连接
http://blog.csdn.net/u011239443/article/details/73717774
小爷毛毛_卓寿杰
2019/02/13
1.6K0
Consul 的部署与使用
Consul是一种网络工具,可提供功能齐全的服务网格和服务发现。在本地尝试领事。这句话引用与官网
java攻城狮
2021/01/18
1.5K0
Could not connect to Redis at 127.0.0.1:6379:由于目标计算机积极拒绝,无法连接
redis-server --service-install redis.windows.conf
一写代码就开心
2021/06/29
1.7K0
Get "http://127.0.0.1:10252/healthz": dial tcp 127.0.0.1:10252: connect: connection refused
解决思路: 注释掉/etc/kubernetes/manifests下的kube-controller-manager.yaml和kube-scheduler.yaml的- – port=0 确认kube-scheduler和kube-controller-manager组件配置是否禁用了非安全端口
院长技术
2020/11/19
3.7K0
Consul 基础6
使用 dig 查看节点IP [root@h104 ~]# dig @127.0.0.1 -p 8600 h104.node.consul ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.1 <<>> @127.0.0.1 -p 8600 h104.node.consul ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERRO
franket
2021/12/01
2530
【平坑攻略】Could not connect to Redis at 127.0.0.1:6379:由于目标计算机积极拒绝,无法连接
输入命令redis-server.exe redis.windows.conf后,不要关闭,不要关闭 重新打开cmd窗口输入redis-cli.exe-h 127.0.0.1
全栈程序员站长
2022/08/15
2.9K0
【平坑攻略】Could not connect to Redis at 127.0.0.1:6379:由于目标计算机积极拒绝,无法连接
[日常] 解决mysql localhost可以连接但是127.0.0.1不能连接
在测试mysql的过程中遇到使用localhost可以连接但是127.0.0.1不能连接,原因是localhost使用的本地socket连接,127.0.0.1使用使用的tcp连接
唯一Chat
2019/12/10
5.4K0
FlowPortal 连接服务器”127.0.0.1″失败
今天早上FlowPortal系统突然出现如下报错: 连接服务器”127.0.0.1″失败。 原因: No connection could be made because the target machine actively refused it 127.0.0.1:1590
Tony老师
2020/03/04
13.6K0
FlowPortal 连接服务器”127.0.0.1″失败
Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝无法连接解决方案
出现这个情况是你没有见Redis的服务打开,重新双击打启动服务,之后再次打开客户端即可正常运行。
萌萌哒的瓤瓤
2020/08/26
6.5K0
Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝无法连接解决方案
creating server tcp listening socket 127.0.0.1:6379: bind No error
参考链接:https://blog.csdn.net/n_fly/article/details/52692480
别先生
2018/12/19
1.1K0
Consul 集群2
此时已经分别在104和103上启动了两个代理a1和a2,a1准备用来作server ,a2用来作client,但它们彼此还互不认识,都是自己的单节点集群中的唯一节点,可以通过 consul members 来进行查看
franket
2021/12/01
3800
[Go] 解决packets.go:36: read tcp 127.0.0.1:51139->127.0.0.1:3306: wsarecv: An established connection w
DB.DB().SetConnMaxLifetime(59 * time.Second)
唯一Chat
2021/10/13
1.7K0
WinSCP连接Ubuntu被拒绝
2.Ubuntu默认root是关闭的,最好重新设置一遍密码:passwd root就能开启root
全栈程序员站长
2022/09/30
3.6K0
WinSCP连接Ubuntu被拒绝
setsockopt与getsockopt
参数释义: sock:网络文件描述符 level:选项所在协议层。 如果想要在套接字层面上进行配置,则将此项设置为SOL_SOCKET。 optname:需要访问的选项名 (后面会有)(取决于level) optval:对于getsockopt(),指向返回选项值的缓冲。对于setsockopt(),指向包含新选项值的缓冲。 optlen:对于getsockopt(),作为入口参数时,选项值的最大长度。作为出口参数时,选项值的实际长度。对于setsockopt(),现选项的长度。
看、未来
2020/08/26
1.2K0
winscp登录主机拒绝_winscp连接被拒绝怎么解决[通俗易懂]
解决方法:1、使用“sudo ufw disable”命令关闭防火墙;2、使用“sudo /etc/init.d/ssh restart”命令开启远程服务;3、打开22端口号。
全栈程序员站长
2022/09/30
11.4K0
pip安装插件失败,拒绝连接
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7ff8fba5f080>, ‘Connection to mirrors.aliyn.com timed out. (connect timeout=15)')': /pypi/simple/python-jenkins/
cywhat
2022/11/22
3.1K1
pip安装插件失败,拒绝连接
WinSCP连接被拒绝「建议收藏」
之前用WinSCP连接华为云服务器传输文件的时候没有出现过问题,但是现在连接实验室电脑的时候报“网络错误,连接被拒绝”。上网查了一下,发现是实验室服务器没有安装openssh-server,参考博文进行安装:Ubuntu安装sshd服务_我是大魔王2的博客-CSDN博客_ubuntu安装sshd
全栈程序员站长
2022/09/30
3.4K0
WinSCP连接被拒绝「建议收藏」
Tcp连接建立与连接释放
1)客户端给服务器发送了一条将其SYN标志位置1的请求连接建立报文,然后其状态由closed转变为SYN-SENT(同步已发送)。
你的益达
2020/08/25
3.7K0
Tcp连接建立与连接释放
WIN10 拒绝连接VPN
最近由于业务需要连接到HK的服务器,然后再转出去;因为换了WIN10老提示“已拒绝远程连接因为未识别出你提供的用户名
谭广健
2021/06/24
3.6K0
3.网络编程 网络编程
操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
changxin7
2019/08/20
2.5K0
3.网络编程 网络编程

相似问题

显示带有<use>标签和href或xlink:href属性的外部SVG?

30

不显示Chrome中的SVG <use>元素

31

带有<use>和xlink的SVG Sprite:href

257

Chrome中的SVG 'use‘标签损坏

21

为什么带有<use>标签的SVG不能像普通SVG那样缩放?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文