在列中使用多个变量进行更长的数据透视 数据

如何解决在列中使用多个变量进行更长的数据透视 数据

我的数据如下:

# A tibble: 120 x 5
     age death_rate_male life_exp_male death_rate_fem life_exp_fem
   <dbl>           <dbl>         <dbl>          <dbl>        <dbl>
 1     0        0.00630           76.0       0.00523          81.0
 2     1        0.000426          75.4       0.000342         80.4
 3     2        0.00029           74.5       0.000209         79.4
 4     3        0.000229          73.5       0.000162         78.4
 5     4        0.000162          72.5       0.000143         77.4
 6     5        0.000146          71.5       0.000125         76.5
 7     6        0.000136          70.5       0.000113         75.5
 8     7        0.000127          69.6       0.000104         74.5
 9     8        0.000115          68.6       0.000097         73.5
10     9        0.000103          67.6       0.000093         72.5
# ... with 110 more rows
> 

我正在尝试创建一个整洁的表,其中的变量是年龄,性别,预期寿命和死亡率。

我设法通过将数据帧分成两个(一个包含预期寿命,另一个包含死亡率),并用pivot_longer()进行整理,然后附加两个表来做到这一点。 有没有一种方法可以通过单个pivot_longer()命令更优雅地完成此操作?预先谢谢你。

解决方法

我们可以使用names_pattern(根据模式将其捕获为一组)

library(dplyr)
library(tidyr)
df1 %>%
   pivot_longer(cols = -age,names_to = c( '.value','grp'),names_pattern = "^(\\w+_\\w+)_(\\w+)")
# A tibble: 20 x 4
#     age grp   death_rate life_exp
#   <int> <chr>      <dbl>    <dbl>
# 1     0 male    0.0063       76  
# 2     0 fem     0.00523      81  
# 3     1 male    0.000426     75.4
# 4     1 fem     0.000342     80.4
# 5     2 male    0.00029      74.5
# 6     2 fem     0.000209     79.4
# 7     3 male    0.000229     73.5
# 8     3 fem     0.000162     78.4
# 9     4 male    0.000162     72.5
#10     4 fem     0.000143     77.4
#11     5 male    0.000146     71.5
#12     5 fem     0.000125     76.5
#13     6 male    0.000136     70.5
#14     6 fem     0.000113     75.5
#15     7 male    0.000127     69.6
#16     7 fem     0.000104     74.5
#17     8 male    0.000115     68.6
#18     8 fem     0.000097     73.5
#19     9 male    0.000103     67.6
#20     9 fem     0.000093     72.5

names_sep(在此处指定模式为下划线,后面没有字符为下划线)

df1 %>%
   pivot_longer(cols = -age,names_sep = "_(?=[^_]+$)")

数据

df1 <- structure(list(age = 0:9,death_rate_male = c(0.0063,0.000426,0.00029,0.000229,0.000162,0.000146,0.000136,0.000127,0.000115,0.000103),life_exp_male = c(76,75.4,74.5,73.5,72.5,71.5,70.5,69.6,68.6,67.6),death_rate_fem = c(0.00523,0.000342,0.000209,0.000143,0.000125,0.000113,0.000104,9.7e-05,9.3e-05),life_exp_fem = c(81,80.4,79.4,78.4,77.4,76.5,75.5,72.5)),class = "data.frame",row.names = c("1","2","3","4","5","6","7","8","9","10"))
,

从akrun借用数据,这是使用reshape

的基本R选项
reshape(
  setNames(df,gsub("(.*)_(\\w+)","\\1\\.\\2",names(df))),direction = "long",varying = -1
)

这样

        age time death_rate life_exp id
1.male    0 male   0.006300     76.0  1
2.male    1 male   0.000426     75.4  2
3.male    2 male   0.000290     74.5  3
4.male    3 male   0.000229     73.5  4
5.male    4 male   0.000162     72.5  5
6.male    5 male   0.000146     71.5  6
7.male    6 male   0.000136     70.5  7
8.male    7 male   0.000127     69.6  8
9.male    8 male   0.000115     68.6  9
10.male   9 male   0.000103     67.6 10
1.fem     0  fem   0.005230     81.0  1
2.fem     1  fem   0.000342     80.4  2
3.fem     2  fem   0.000209     79.4  3
4.fem     3  fem   0.000162     78.4  4
5.fem     4  fem   0.000143     77.4  5
6.fem     5  fem   0.000125     76.5  6
7.fem     6  fem   0.000113     75.5  7
8.fem     7  fem   0.000104     74.5  8
9.fem     8  fem   0.000097     73.5  9
10.fem    9  fem   0.000093     72.5 10

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res