简体   繁体   English

如何重塑这些数据?

[英]How do I reshape this data?

Hoping someone can help me.希望有人可以帮助我。

I have this dataset:我有这个数据集:在此处输入图像描述

I want to produce a dataframe exactly like this:我想像这样生产一个 dataframe :

在此处输入图像描述

I've tried so many different ways using tidyverse, baseR to do this, but I can't seem to find a solution.我已经尝试了很多不同的方法,使用 tidyverse、baseR 来做到这一点,但我似乎找不到解决方案。

Can anyone please help?有人可以帮忙吗?

Maybe something like也许像

df %>% pivot_longer(cols = -Subject, names_to = c("Gender", "Age"), names_sep = "_")

But without any pasteable sample data, it's hard to check.但是没有任何可粘贴的样本数据,很难检查。

Please read about how to ask a good question and how to give a reproducible example .请阅读如何提出一个好问题以及如何给出一个可重复的例子 Sharing data as screenshot is not the correct way to get help.以屏幕截图的形式共享数据不是获得帮助的正确方式。


For reproducibility I have created a sample dataset by hand which is similar to your data.为了重现性,我手动创建了一个与您的数据相似的示例数据集。

df <- data.frame(Subject = c('ID986', 'ID407'), M_22_25 = c(4, 5), 
                 M_31_35 = NA, F_31_35 = NA, M_26_30 = c(2, 3))
df

#  Subject M_22_25 M_31_35 F_31_35 M_26_30
#1   ID986       4      NA      NA       2
#2   ID407       5      NA      NA       3

You can use tidyr::pivot_longer to get data in required structure.您可以使用tidyr::pivot_longer来获取所需结构中的数据。

tidyr::pivot_longer(df, 
                    cols = -Subject, 
                    names_to = c('Gender', 'Age'), 
                    names_pattern = '(M|F)_(.*)', 
                    values_drop_na = TRUE)

#  Subject Gender Age   value
#  <chr>   <chr>  <chr> <dbl>
#1 ID986   M      22_25     4
#2 ID986   M      26_30     2
#3 ID407   M      22_25     5
#4 ID407   M      26_30     3

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM