在dplyr中的行和正常列之间切换
我想知道如何在dplyr中在行和正常(列)之间切换。例如,下面的代码可以工作,但它会生成一些红色日志,如警告。如何以常规样式(而不是按行)执行“选择”命令:在dplyr中的行和正常列之间切换,r,dplyr,rowwise,R,Dplyr,Rowwise,我想知道如何在dplyr中在行和正常(列)之间切换。例如,下面的代码可以工作,但它会生成一些红色日志,如警告。如何以常规样式(而不是按行)执行“选择”命令: df%rowwise()%%>% 突变(输出=列表(isoreg(c_跨(第1年:第4年))$yf))%>% 三年:最新产量%>% 选择(,-以“年”开头) 我认为,通过在上述模式之间轻松切换,问题将得到解决。rowwise()实际上是对数据进行分组。因此,ungroup() 通常,总是在执行分组操作后立即取消数据分组。否则,代码很容易出
df%rowwise()%%>%
突变(输出=列表(isoreg(c_跨(第1年:第4年))$yf))%>%
三年:最新产量%>%
选择(,-以“年”开头)
我认为,通过在上述模式之间轻松切换,问题将得到解决。rowwise()
实际上是对数据进行分组。因此,ungroup()
通常,总是在执行分组操作后立即取消数据分组。否则,代码很容易出错。rowwise()
实际上会对数据进行分组。因此,ungroup()
通常,总是在执行分组操作后立即取消数据分组。否则,您的代码很容易出错。返回一个命名输出,以避免出现警告。一种方法是使用setNames
library(dplyr)
df %>%
rowwise() %>%
mutate(output = list(setNames(isoreg(c_across(year1:year4))$yf,
paste0('col', 1:4)))) %>%
tidyr::unnest_wider(output) %>%
select(-starts_with('year'))
# A tibble: 6 x 5
# id col1 col2 col3 col4
# <int> <dbl> <dbl> <dbl> <dbl>
#1 1 14 14 30 40
#2 2 13 13 31 41
#3 3 12 12 32 42
#4 4 11 11 33 43
#5 5 10 10 34 44
#6 6 9 9 35 45
库(dplyr)
df%>%
行()
突变(输出=列表(集合名(isoreg(c_跨(第1年:第4年))$yf,
粘贴0('col',1:4))%>%
三年:最新产量%>%
选择(-以('year')开头)
#一个tibble:6x5
#id col1 col2 col3 col4
#
#1 1 14 14 30 40
#2 2 13 13 31 41
#3 3 12 12 32 42
#4 4 11 11 33 43
#5 5 10 10 34 44
#6 6 9 9 35 45
返回避免警告的命名输出。一种方法是使用setNames
library(dplyr)
df %>%
rowwise() %>%
mutate(output = list(setNames(isoreg(c_across(year1:year4))$yf,
paste0('col', 1:4)))) %>%
tidyr::unnest_wider(output) %>%
select(-starts_with('year'))
# A tibble: 6 x 5
# id col1 col2 col3 col4
# <int> <dbl> <dbl> <dbl> <dbl>
#1 1 14 14 30 40
#2 2 13 13 31 41
#3 3 12 12 32 42
#4 4 11 11 33 43
#5 5 10 10 34 44
#6 6 9 9 35 45
库(dplyr)
df%>%
行()
突变(输出=列表(集合名(isoreg(c_跨(第1年:第4年))$yf,
粘贴0('col',1:4))%>%
三年:最新产量%>%
选择(-以('year')开头)
#一个tibble:6x5
#id col1 col2 col3 col4
#
#1 1 14 14 30 40
#2 2 13 13 31 41
#3 3 12 12 32 42
#4 4 11 11 33 43
#5 5 10 10 34 44
#6 6 9 9 35 45
我添加了ungroup(),但它仍然像日志一样给我发出红色警告。你指的是什么警告?“新名称…”我添加了ungroup(),但它仍然像日志一样给我发出红色警告。你指的是什么警告?“新名字…”?