Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用名称\u模式旋转\u_R_Dplyr_Pivot - Fatal编程技术网

R 使用名称\u模式旋转\u

R 使用名称\u模式旋转\u,r,dplyr,pivot,R,Dplyr,Pivot,我对整个编程都是新手,但我需要为大型数据集编写可复制的脚本。我希望我提供了一个充分的例子 我有一个这样的数据框架(还有8个“营养素”和5个“贸易元素”以及更多的年份): 我希望它看起来像这样: Year Nutrient Production Import 1961 Total_Energy_kcal 5 6 1962 Total_Energy_kcal 8 1 1961 Tota

我对整个编程都是新手,但我需要为大型数据集编写可复制的脚本。我希望我提供了一个充分的例子

我有一个这样的数据框架(还有8个“营养素”和5个“贸易元素”以及更多的年份):

我希望它看起来像这样:

Year  Nutrient            Production        Import
1961  Total_Energy_kcal   5                 6
1962  Total_Energy_kcal   8                 1
1961  Total_Ca_g          3                 3 
1962  Total_Ca_g          4                 8
我用
pivot\u longer
names\u paten
做了很多尝试。我认为这会奏效,但我不完全理解以下论点:

df_piv<-df%>%
  pivot_longer(cols = -Year, names_to = "Nutrient", 
              names_pattern = ".*(?=_)")

您可以提供
names\u pattern
regex作为:

tidyr::pivot_longer(df, 
                    cols = -Year, 
                    names_to = c('Nutrient', '.value'),
                    names_pattern = '(.*)_(\\w+)')

#   Year Nutrient          Production Import
#  <dbl> <chr>                  <dbl>  <dbl>
#1  1961 Total_Energy_kcal          5      6
#2  1961 Total_Ca_g                 3      3
#3  1962 Total_Energy_kcal          8      1
#4  1962 Total_Ca_g                 4      8

谢谢!我以前尝试过这个方法时,cbind导致了这个问题。谢谢!
df_piv<-df%>%
  pivot_longer(cols = -Year, names_to = "Nutrient", 
              names_pattern = ".*(?=_)")
Error: Can't select within an unnamed vector.
tidyr::pivot_longer(df, 
                    cols = -Year, 
                    names_to = c('Nutrient', '.value'),
                    names_pattern = '(.*)_(\\w+)')

#   Year Nutrient          Production Import
#  <dbl> <chr>                  <dbl>  <dbl>
#1  1961 Total_Energy_kcal          5      6
#2  1961 Total_Ca_g                 3      3
#3  1962 Total_Energy_kcal          8      1
#4  1962 Total_Ca_g                 4      8
df<-data.frame(Year,Total_Energy_kcal_Production,Total_Energy_kcal_Import, 
               Total_Ca_g_Production, Total_Ca_g_Import)