【问题标题】:data frame every second column每隔一列的数据框
【发布时间】:2021-04-22 11:44:51
【问题描述】:

我有一个 df1 数据框,我想创建 df2 和 df3,其原则是每隔一列从 4 列获取 (df2),从 5 列获取每一列 (df3)。

#df1
aaa <- c("EU", "EU", "IN", "GR")
bbb <- c("AU", "PL", "IN", "ES")
ccc <- c(1, 2, 3, 4)
h0 <- c(2, 2, 3, 4)
h1 <- c(3, 4, 3, 1)
h2 <- c(3, 5, 5, 5)
h3 <- c(3, 5, 5, 5)
h4 <- c(3, 5, 5, 5)
h5 <- c(3, 5, 5, 5)
#..
#hn

#df2
aaa <- c("EU", "EU", "IN", "GR")
bbb <- c("AU", "PL", "IN", "ES")
ccc <- c(1, 2, 3, 4)
h0 <- c(2, 2, 3, 4)
h2 <- c(3, 5, 5, 5)
h4 <- c(3, 5, 5, 5)

#df3
aaa <- c("EU", "EU", "IN", "GR")
bbb <- c("AU", "PL", "IN", "ES")
ccc <- c(1, 2, 3, 4)
h1 <- c(3, 4, 3, 1)
h3 <- c(3, 5, 5, 5)
h5 <- c(3, 5, 5, 5)

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    这是另一种基于奇数列和偶数列的解决方案:

    df1 <- data.frame(aaa, bbb, ccc, h0, h1, h2, h3, h4, h5)
    
    df2 <- df1[ , c(1:3, c(4:ncol(df1))[c(4:ncol(df1)) %% 2 == 0])]
    df2
      aaa bbb ccc h0 h2 h4
    1  EU  AU   1  2  3  3
    2  EU  PL   2  2  5  5
    3  IN  IN   3  3  5  5
    4  GR  ES   4  4  5  5
    
    df3 <- df1[ , c(1:3, c(4:ncol(df1))[c(4:ncol(df1)) %% 2 == 1])]
    df3
      aaa bbb ccc h1 h3 h5
    1  EU  AU   1  3  3  3
    2  EU  PL   2  4  5  5
    3  IN  IN   3  3  5  5
    4  GR  ES   4  1  5  5
    

    【讨论】:

      【解决方案2】:

      你可以试试

      df <- data.frame(aaa, bbb, ccc, h0, h1, h2, h3, h4, h5)
      
      df[,c(T, T, T, rep(c(T, F), length.out = ncol(df)-3))]
        aaa bbb ccc h0 h2 h4
      1  EU  AU   1  2  3  3
      2  EU  PL   2  2  5  5
      3  IN  IN   3  3  5  5
      4  GR  ES   4  4  5  5
      df[,c(T, T, T, rep(c(F, T), length.out = ncol(df)-3))]
        aaa bbb ccc h1 h3 h5
      1  EU  AU   1  3  3  3
      2  EU  PL   2  4  5  5
      3  IN  IN   3  3  5  5
      4  GR  ES   4  1  5  5
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-09-11
        • 1970-01-01
        • 1970-01-01
        • 2021-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多