使用tidyverse在R中进行数据争用?

使用tidyverse在R中进行数据争用?,r,dataframe,data-wrangling,wrangle,R,Dataframe,Data Wrangling,Wrangle,所以我有这个数据集 主要的转换是旋转表,因此总体名称位于第一列,名称是每列的标题(它们被重命名,因此叶绿素被重命名为CHLa)。数据透视和重命名表后的另一个变化是,每一行都复制到指定的数量,因此在预览中,如果您注意到,AK复制了8次,NU复制了两次,依此类推。 谁能帮我完成这个任务? 谢谢大家! 我认为您可以使用tidyverse中的pivot_加宽和pivot_加长功能:我们可以使用pivot_加长转换为长格式,然后再执行pivot_加宽 library(tidyr) library(dply

所以我有这个数据集 主要的转换是旋转表,因此总体名称位于第一列,名称是每列的标题(它们被重命名,因此叶绿素被重命名为CHLa)。数据透视和重命名表后的另一个变化是,每一行都复制到指定的数量,因此在预览中,如果您注意到,AK复制了8次,NU复制了两次,依此类推。 谁能帮我完成这个任务?
谢谢大家!

我认为您可以使用tidyverse中的pivot_加宽和pivot_加长功能:

我们可以使用
pivot_加长
转换为长格式,然后再执行
pivot_加宽

library(tidyr)
library(dplyr)
library(stringr)
df1 %>% 
  filter(str_detect(name, 'Chlorophyll')) %>%
  pivot_longer(cols = -name, names_to = "POP") %>%      
  pivot_wider(names_from = name, values_from = value)
数据
df1感谢您的回复!有没有办法将数据分组,而不是单独列出?我这样问是因为我的实际数据集比这个大得多。@Daniel.Payter不清楚分组条件。我在看你的“Chla”等,但不确定你在书中使用的逻辑grouping@Daniel.Payter我在两者之间做了一个
过滤器
步骤,因为它不是clear@Danile.Payter我在我的帖子上看到一个编辑。请您澄清为什么删除数据
Present.Surface.Cloud.cover.Max
Present.Surface.Current.Velocity.Lt.Max
df1 <- structure(list(AK = c(2.06938085, 0.06230826, 2.48330742, 0.77990199, 
0.05352413, 2.42978332, 0.32111359, -0.31824945, -0.76257673, 
0.21244649), NU = c(0.94342952, 0.06967302, 1.18308591, 0.24512465, 
0.05954595, 1.12353996, 0.3282527, 0.0332011, 0.10143732, 0.01747852
), GR = c(2.02611122, 0.04936086, 2.41093187, 0.45293345, 0.04685186, 
2.36408, -0.2601983, -0.5992214, -0.53467979, 0.07776527), LB = c(1.54587253, 
0.26267895, 1.74803992, 0.67839487, 0.22805005, 1.51998983, -0.25436427, 
-0.07033478, 0.09848198, 0.07864418), NF = c(1.63438226, 0.19021245, 
1.81304267, 0.69796724, 0.1629694, 1.65007327, 0.21143971, 0.32577614, 
0.29918981, 0.08665113), ST = c(2.40265686, 1.16806181, 2.66182316, 
1.7417354, 0.89450362, 1.76731954, -0.38944296, -0.31842728, 
-0.27451047, 0.09962626), NS = c(1.143188447, 0.070796679, 1.393892288, 
0.447486223, 0.059898949, 1.333993367, 0.003421558, 0.020280698, 
-0.044788628, 0.086701809), NB = c(1.79361422, 0.23087077, 2.34315343, 
0.8995402, 0.16849883, 2.17465466, -0.30522065, -0.43764352, 
-0.64518845, 0.07564453), ME = c(1.6936173, 0.1307856, 2.0172089, 
0.7113195, 0.1135671, 1.9036418, -0.9033899, -0.7945115, -0.8507709, 
0.1036442), IC = c(2.28296799, 0.14749662, 2.51693005, 0.89241081, 
0.13475936, 2.38217072, 0.48013856, 0.59088701, 0.60322486, 0.05169639
), FI = c(0.55358516, 0.05694769, 0.75707975, 0.20722915, 0.04236526, 
0.71471448, 0.42658058, -0.01849223, -0.22192967, 0.08643648), 
    name = c("Present.Surface.Chlorophyll.Lt.max", "Present.Surface.Chlorophyll.Lt.min", 
    "Present.Surface.Chlorophyll.Max", "Present.Surface.Chlorophyll.Mean", 
    "Present.Surface.Chlorophyll.Min", "Present.Surface.Chlorophyll.Range", 
    "Present.Surface.Cloud.cover.Max", "Present.Surface.Cloud.cover.Mean", 
    "Present.Surface.Cloud.cover.Min", "Present.Surface.Current.Velocity.Lt.max"
    )), class = "data.frame", row.names = c("1", "2", "3", "4", 
"5", "6", "7", "8", "9", "10"))