如何将与条件匹配的值存储在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的输出太大,无法共享,因此,我尝试只使用几行代码来演示数据集的结构。