如何解决仅在 R 中的一列上使用 pivot_wider
这是我的 df:
Analyte name Limit_Type
<chr> <chr> <chr>
1 " BOD(C)" Limit1 " 50%ile"
2 " BOD(C)" Limit1_Value "10"
3 " CBOD(C)" Limit1 " 90%ile"
4 " CBOD(C)" Limit1_Value "15"
5 " CBOD(C)" Limit2 " NA"
6 " CBOD(C)" Limit2_Value NA
我想基本上“传播”或pivot_wider()
'Limit_Type' 列,以便我的 df 看起来像这样:
Analyte Limit_Type Limit
<chr> <chr> <chr>
1 " BOD(C)" " 50%ile" 10
2 " CBOD(C)" " 90%ile" 15
3 " CBOD(C)" "NA" NA
这可以用 dplyr 实现吗?
谢谢。
解决方法
您可以根据 name
的存在将 Limit
列更改为 Limit_Type
和 'Value'
。使用 pivot_wider
library(dplyr)
library(tidyr)
df %>%
mutate(name = ifelse(grepl('Value',name),'Limit','Limit_Type')) %>%
pivot_wider(names_from = name,values_from = Limit_Type,values_fn = list) %>%
unnest(cols = c(Limit_Type,Limit))
# Analyte Limit_Type Limit
# <chr> <chr> <chr>
#1 " BOD(C)" " 50%ile" 10
#2 " CBOD(C)" " 90%ile" 15
#3 " CBOD(C)" " NA" NA
数据
df <- structure(list(Analyte = c(" BOD(C)"," BOD(C)"," CBOD(C)"," CBOD(C)"),name = c("Limit1","Limit1_Value","Limit1","Limit2","Limit2_Value"),Limit_Type = c(" 50%ile","10"," 90%ile","15"," NA",NA)),class = "data.frame",row.names = c(NA,-6L))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。