繁体   English   中英

如何根据包含的字符串的一部分 select 列,然后在 R 中删除部分列名? (列 position 可能会有所不同)

[英]How to select a column based on part of a contained string and then drop part of the column name in R? (Column position may vary)

我正在编写 function 来准备 R 中的数据框,以便稍后在回归中使用。 我想重命名包含单词距离的任何列。 具体来说,我想删除距离之前的第一个描述性词。 (因此这将包括单词距离开始之前的单词和句点)。

我有:

country.distance.median country.distance.mean population  life.q state.distance.mean
                210                   189      10000        0.6.    100
                3100                  2100     20000        0.7.    300
                37                    36        500         0.3     10 

我想:

             distance.median distance.mean population   life.q  distance.mean
                210                   189      10000      0.6     100
                3100                  2100     20000      0.7     300
                37                    36        500       0.3     10

因为这将包含在 function 中,所以列的数量和 position 是可变的,所以我需要一个不依赖于 position 列的解决方案。 请注意,它不应更改列名“life.q”,因此解决方案需要能够基于距离字符串同样识别 select 列。 请注意,距离前面的单词也可能会发生变化(例如,列“state.distance.mean”)。

(它还应该能够用作 function 中的 if 语句。)

感谢您的时间和想法。 :)

您可以尝试在此处使用sub

names(df) <- sub("^country\\.(?=distance\\.)", "", names(df), perl=TRUE)
df

  distance.median distance.mean population life.q
1             210           189      10000    0.6
2            3100          2100      20000    0.7
3              37            36        500    0.3

更一般地,要删除以点开头的第一个单词,前提是单词后面还有另一个点,您可以尝试:

names(df) <- sub("^[^.]+\\.(?=.*\\.)", "", names(df), perl=TRUE)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM