[英]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.