gpt4 book ai didi

替换 r 中每个相关列的 NA 值

转载 作者:行者123 更新时间:2023-12-04 10:09:28 25 4
gpt4 key购买 nike

我正在尝试清理这样的数据集:

       date                pm2.5 pm2.5_flag  NEPH NEPH_flag NEPH_RH NEPH_RH_flag
<dttm> <dbl> <chr> <dbl> <chr> <dbl> <chr>
1 2020-02-04 00:00:00 26.8 G 1.02 G 35.8 G
2 2020-02-04 00:01:00 27.1 G 0.98 G 35.7 G
3 2020-02-04 00:02:00 27.2 G 0.95 G 35.8 G
4 2020-02-04 00:03:00 27.0 G 0.94 G 35.7 G
5 2020-02-04 00:04:00 26.8 G 0.93 G 35.6 G
6 2020-02-04 00:05:00 26.7 G 0.94 G 35.6 G
7 2020-02-04 00:06:00 26.9 G 0.92 G 35.7 G
8 2020-02-04 00:07:00 27.0 G 0.83 G 35.4 G
9 2020-02-04 00:08:00 27.4 G 0.81 G 35.4 G
10 2020-02-04 00:09:00 27.8 G 0.72 G 35.0 G

它在一列中有数据值,在它旁边有一列带有与该值相关联的标志。我想从该列中删除与“G”不同的所有其他标志,并用 NA 替换相关列的值。

例如,如果我的行是
date                pm2.5 pm2.5_flag  NEPH NEPH_flag NEPH_RH NEPH_RH_flag
<dttm> <dbl> <chr> <dbl> <chr> <dbl> <chr>
1 2020-02-04 00:00:00 26.8 G 1.02 G 35.8 G
2 2020-02-04 00:01:00 27.1 C 0.98 BIA 35.7 G
10 2020-02-04 00:09:00 27.8 C 0.72 G 35.0 G

我想得到
  date                pm2.5 pm2.5_flag  NEPH NEPH_flag NEPH_RH NEPH_RH_flag
<dttm> <dbl> <chr> <dbl> <chr> <dbl> <chr>
1 2020-02-04 00:00:00 26.8 G 1.02 G 35.8 G
2 2020-02-04 00:01:00 NA NA NA NA 35.7 G
10 2020-02-04 00:09:00 NA NA 0.72 G 35.0 G

最佳答案

您可以使用 'flag' 创建列对和它相关联的相应值。这里的列彼此相邻,因此我们可以获得 'flag' 的索引列和使用 -1得到相应的列。

flag_cols <- grep('flag', names(df))
inds <- df[flag_cols] != "G"
df[flag_cols][inds] <- NA
df[flag_cols - 1][inds] <- NA
df

# date pm2.5 pm2.5_flag NEPH NEPH_flag NEPH_RH NEPH_RH_flag
#1 2020-02-0400:00:00 26.8 G 1.02 G 35.8 G
#2 2020-02-0400:01:00 NA <NA> NA <NA> 35.7 G
#10 2020-02-0400:09:00 NA <NA> 0.72 G 35.0 G

关于替换 r 中每个相关列的 NA 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61399390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com