【问题标题】:R shifting values of dataframe to the left while preserving headersR在保留标题的同时将数据帧的值向左移动
【发布时间】:2020-04-30 16:39:23
【问题描述】:

我有一个 csv 文件,其标题格式为:

a,b,c,d
1,6,5,6,8

df <- read_csv("test.csv")

由于某种原因,示例中的值 1 不正确,为了更正文件,我想将所有其他值向左移动,从而删除 1 但保留以 : 结尾的列

a,b,c,d
6,5,6,8

我怎样才能做到这一点?

【问题讨论】:

    标签: r dataframe shift


    【解决方案1】:

    这个呢:

    headers <- names(df)
    new_df <- df[, 2:length(df)]
    names(new_df) <- headers
    

    【讨论】:

      【解决方案2】:

      在一行代码中,structure 命令创建一个对象并分配属性:

      structure(df[,2:length(df)], names = names(df)[1:(length(df)-1)])
      

      认识到 data.frame 是等长向量的列表,其中每个向量代表一列,以下也将起作用:

      structure(df[2:length(df)], names = names(df)[1:(length(df)-1)])
      

      注意df[1:length(df)] 中没有逗号。

      另外,我喜欢使用负索引从向量或列表中删除项目的技巧。所以我认为更简洁的代码是:

      structure(df[-1], names = names(df)[-length(df)])
      

      【讨论】:

        猜你喜欢
        • 2021-05-12
        • 2020-03-15
        • 1970-01-01
        • 1970-01-01
        • 2020-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-18
        相关资源
        最近更新 更多