Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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中数据帧的单独列中?_R_Multiple Columns_Store - Fatal编程技术网

如何将与条件匹配的值存储在R中数据帧的单独列中?

如何将与条件匹配的值存储在R中数据帧的单独列中?,r,multiple-columns,store,R,Multiple Columns,Store,我的数据集如下所示: ISIN Variable Value 182 Sales2008 276 182 Sales2009 800 182 Sales2010 900 182 Sales2011 273 182 Sales2012 276 182 Sales2013 123 182

我的数据集如下所示:


    ISIN        Variable    Value
    182         Sales2008   276
    182         Sales2009   800
    182         Sales2010   900
    182         Sales2011   273
    182         Sales2012   276
    182         Sales2013   123
    182         Sales2014   345
    182         Sales2015   444
    182         Sales2016   666
    182         Sales2017   777
    182         Sales2018   999
    182         Sales2019   235
    182         Salesf2008   276
    182         Salesf2009   800
    182         Salesf2010   900
    182         Salesf2011   273
    182         Salesf2012   276
    182         Salesf2013   123
    182         Salesf2014   345
    182         Salesf2015   444
    182         Salesf2016   666
    182         Salesf2017   777
    182         Salesf2018   999
    182         Salesf2019   235
    182         ROA2008      333
    182         ROA2009      333
    182         ROA2010      333
    182         ROA2011      333
    182         ROA2012      333
    182         ROA2013      333
    182         ROA2014      333
    182         ROA2015      333
    182         ROA2016      333
    182         ROA2017      333
    182         ROA2018      333
    182         ROA2019      333

您对如何创建一个新的df有何建议,其中从
Sales2008
Sales2019
的值将存储在一列中?另外,
Salesf2008
Salesf2019
的值将存储在下一列中,而
ROA2008至
ROA2019
的值将存储在下一列中


提前谢谢

如果没有预期的输出,很难说,但听起来你想要这个。这将使用
extract()
通过提取1)字母和2)4位数字生成两列,并使用新列:“Col”和“Values”列从长到宽使用
pivot_wide()
进行转换。希望能有帮助

library(tidyr)
library(dplyr) # for %>%

df1 %>%
  extract(Variable, c("Col", "Year"), "([A-Za-z]+)(\\d{4})", convert = TRUE) %>% 
  pivot_wider(names_from = Col, values_from = Value) 

# A tibble: 12 x 5
    ISIN  Year  Sales Salesf   ROA
   <int> <int> <int>  <int> <int>
 1   182 2008    276    276   333
 2   182 2009    800    800   333
 3   182 2010    900    900   333
 4   182 2011    273    273   333
 5   182 2012    276    276   333
 6   182 2013    123    123   333
 7   182 2014    345    345   333
 8   182 2015    444    444   333
 9   182 2016    666    666   333
10   182 2017    777    777   333
11   182 2018    999    999   333
12   182 2019    235    235   333
library(tidyr)
库(dplyr)#用于%>%
df1%>%
提取(变量,c(“Col”,“Year”),“([A-Za-z]+)(\\d{4})”,convert=TRUE)%>%
透视图(名称从=列,值从=值)
#一个tibble:12x5
年销售额
1   182 2008    276    276   333
2   182 2009    800    800   333
3   182 2010    900    900   333
4   182 2011    273    273   333
5   182 2012    276    276   333
6   182 2013    123    123   333
7   182 2014    345    345   333
8   182 2015    444    444   333
9   182 2016    666    666   333
10   182 2017    777    777   333
11   182 2018    999    999   333
12   182 2019    235    235   333
数据

df1 <- read.table(header = TRUE, text = "ISIN        Variable    Value
182         Sales2008   276
182         Sales2009   800
182         Sales2010   900
182         Sales2011   273
182         Sales2012   276
182         Sales2013   123
182         Sales2014   345
182         Sales2015   444
182         Sales2016   666
182         Sales2017   777
182         Sales2018   999
182         Sales2019   235
182         Salesf2008   276
182         Salesf2009   800
182         Salesf2010   900
182         Salesf2011   273
182         Salesf2012   276
182         Salesf2013   123
182         Salesf2014   345
182         Salesf2015   444
182         Salesf2016   666
182         Salesf2017   777
182         Salesf2018   999
182         Salesf2019   235
182         ROA2008      333
182         ROA2009      333
182         ROA2010      333
182         ROA2011      333
182         ROA2012      333
182         ROA2013      333
182         ROA2014      333
182         ROA2015      333
182         ROA2016      333
182         ROA2017      333
182         ROA2018      333
182         ROA2019      333")

df1如果没有预期的输出,很难说,但听起来你想要这个。这将使用
extract()
通过提取1)字母和2)4位数字生成两列,并使用新列:“Col”和“Values”列从长到宽使用
pivot_wide()
进行转换。希望能有帮助

library(tidyr)
library(dplyr) # for %>%

df1 %>%
  extract(Variable, c("Col", "Year"), "([A-Za-z]+)(\\d{4})", convert = TRUE) %>% 
  pivot_wider(names_from = Col, values_from = Value) 

# A tibble: 12 x 5
    ISIN  Year  Sales Salesf   ROA
   <int> <int> <int>  <int> <int>
 1   182 2008    276    276   333
 2   182 2009    800    800   333
 3   182 2010    900    900   333
 4   182 2011    273    273   333
 5   182 2012    276    276   333
 6   182 2013    123    123   333
 7   182 2014    345    345   333
 8   182 2015    444    444   333
 9   182 2016    666    666   333
10   182 2017    777    777   333
11   182 2018    999    999   333
12   182 2019    235    235   333
library(tidyr)
库(dplyr)#用于%>%
df1%>%
提取(变量,c(“Col”,“Year”),“([A-Za-z]+)(\\d{4})”,convert=TRUE)%>%
透视图(名称从=列,值从=值)
#一个tibble:12x5
年销售额
1   182 2008    276    276   333
2   182 2009    800    800   333
3   182 2010    900    900   333
4   182 2011    273    273   333
5   182 2012    276    276   333
6   182 2013    123    123   333
7   182 2014    345    345   333
8   182 2015    444    444   333
9   182 2016    666    666   333
10   182 2017    777    777   333
11   182 2018    999    999   333
12   182 2019    235    235   333
数据

df1 <- read.table(header = TRUE, text = "ISIN        Variable    Value
182         Sales2008   276
182         Sales2009   800
182         Sales2010   900
182         Sales2011   273
182         Sales2012   276
182         Sales2013   123
182         Sales2014   345
182         Sales2015   444
182         Sales2016   666
182         Sales2017   777
182         Sales2018   999
182         Sales2019   235
182         Salesf2008   276
182         Salesf2009   800
182         Salesf2010   900
182         Salesf2011   273
182         Salesf2012   276
182         Salesf2013   123
182         Salesf2014   345
182         Salesf2015   444
182         Salesf2016   666
182         Salesf2017   777
182         Salesf2018   999
182         Salesf2019   235
182         ROA2008      333
182         ROA2009      333
182         ROA2010      333
182         ROA2011      333
182         ROA2012      333
182         ROA2013      333
182         ROA2014      333
182         ROA2015      333
182         ROA2016      333
182         ROA2017      333
182         ROA2018      333
182         ROA2019      333")

df1最好是共享
dput(df1)
的输出,而不是问题中数据的整个拷贝/粘贴,它占用了一半的页面。非常感谢您的帮助!成功了。dataframe的输出太大,无法共享,所以我试着只用几行来展示数据集是如何构造的。共享
dput(df1)
的输出会更好,而不是问题中数据的整个拷贝/粘贴,它占用了一半的页面。非常感谢您的帮助!成功了。dataframe的输出太大,无法共享,因此,我尝试只使用几行代码来演示数据集的结构。