错误传播R中的数据集

时间:2018-04-19 16:09:33

标签: r dataframe reshape

我有一个按地理位置和年份细分的长数据集,有大约5个感兴趣的变量(参见结构打击),每次我尝试将其转换为广泛形式时,我被告知有重复所以它不能。

df
Yr    Geo     Obs1  Obs2  
2001  Dist1    1     3     
2002  Dist1    2     5   
2003  Dist1    4     2    
2004  Dist1    2     1   
2001  Dist2    1     3     
2002  Dist2   .9     5     
2003  Dist2    6     8     
2004  Dist2    2    .2     

我想把它转换成像这样的东西

yr    dist1obs1  dist1obs2  dist2obs1 dist2obs2
2001
2002
2003
2004

2 个答案:

答案 0 :(得分:1)

寻找这样的东西......?

> reshape(df, v.names= c("Obs1", "Obs2"), idvar="Yr", timevar ="Geo", direction="wide")
    Yr Obs1.Dist1 Obs2.Dist1 Obs1.Dist2 Obs2.Dist2
1 2001          1          3        1.0        3.0
2 2002          2          5        0.9        5.0
3 2003          4          2        6.0        8.0
4 2004          2          1        2.0        0.2

答案 1 :(得分:0)

以下是使用gather的解决方案。由于Obs适用于一个键值对,因此您需要先unite dist library(tidyverse) tbl <- read_table2( "Yr Geo Obs1 Obs2 2001 Dist1 1 3 2002 Dist1 2 5 2003 Dist1 4 2 2004 Dist1 2 1 2001 Dist2 1 3 2002 Dist2 .9 5 2003 Dist2 6 8 2004 Dist2 2 .2" ) tbl %>% gather("obsnum", "obs", Obs1, Obs2) %>% unite(colname, Geo, obsnum, sep = "") %>% spread(colname, obs) %>% `colnames<-`(str_to_lower(colnames(.))) #> # A tibble: 4 x 5 #> yr dist1obs1 dist1obs2 dist2obs1 dist2obs2 #> <int> <dbl> <dbl> <dbl> <dbl> #> 1 2001 1. 3. 1.00 3.00 #> 2 2002 2. 5. 0.900 5.00 #> 3 2003 4. 2. 6.00 8.00 #> 4 2004 2. 1. 2.00 0.200 package experiments; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; public class CreateDialogFromOptionPane { public static void main(final String[] args) { final JFrame parent = new JFrame(); JButton button = new JButton(); button.setText("Click me to show dialog!"); parent.add(button); parent.pack(); parent.setVisible(true); button.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(java.awt.event.ActionEvent evt) { new JFrame().setVisible(true); new JFrame().setVisible(true); } }); } } {{1}},以便您拥有一个键 - 值对使用。我还将列名设置为小写,如请求的输出中所示。

{{1}}

reprex package(v0.2.0)创建于2018-04-19。