如何 select 基于包含字符串的一部分的列,然后在 R 中删除部分列名? (列位置可能会有所不同)
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)
我正在编写一个函数来准备 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
因为这将包含在一个函数中,列的数量和位置是可变的,所以我需要一个不依赖于列位置的解决方案。请注意,它应该 而不是 更改列名称“life.q”,因此解决方案需要能够根据距离字符串同样识别和 select 列.请注意,distance 前面的单词也可能会发生变化(例如,'state.distance.mean' 列)。
(它也应该能够在函数中用作 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)
我正在编写一个函数来准备 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
因为这将包含在一个函数中,列的数量和位置是可变的,所以我需要一个不依赖于列位置的解决方案。请注意,它应该 而不是 更改列名称“life.q”,因此解决方案需要能够根据距离字符串同样识别和 select 列.请注意,distance 前面的单词也可能会发生变化(例如,'state.distance.mean' 列)。
(它也应该能够在函数中用作 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)