gpt4 book ai didi

除少数指定值 R 外,将所有单元格替换为 0

转载 作者:行者123 更新时间:2023-12-04 01:57:59 29 4
gpt4 key购买 nike

我有一个数据框(df),看起来像,

  Id     Name       Activity.
1 ABC a;sldkj kkkdk
2 two llsjdfljs
3 three case one
4 four randshsjl lskjd
5 five case seven
8 eight sllslsll.asdhf
9 nine case ten

我希望将 Activity 中的所有值替换为“0”,除了“案例一”、“案例七”、“案例十”

  Id     Name       Activity.
1 ABC 0
2 two 0
3 three case one
4 four 0
5 five case seven
8 eight 0
9 nine case ten

我试过了,

    df2 <- subset(df, df$`Activity.!='case one'|df$`Activity.`!='case two'|df$`Activity.`!='case three')
df2$Activity <- 0
df <- merge(df,df2)

这在代码中变得冗长,所以我正在寻找一些更好的解决方案

最佳答案

我们可以使用grep

df1$"Activity."[!grepl('^case', df1$"Activity.")] <- 0
df1
# Id Name Activity.
#1 1 ABC 0
#2 2 two 0
#3 3 three case one
#4 4 four 0
#5 5 five case seven
#6 8 eight 0
#7 9 nine case ten

如果有更多的 case 并且我们只想对上面提到的 'case' 进行 grep

df1$"Activity."[grepl('^case\\s+(one|seven|ten)', df1$"Activity.")] <- 0

如果我们使用data.table,一个更快更有效的方法是set 'Activity'。作为'data.table'转换后的'key'列(setDT(df1,..),然后赋值(:=),'Activity中的值' 到'0',不是'案例一',或'案例七',...

library(data.table)
setDT(df1, key='Activity.')[!(paste('case', c('one', 'seven',
'ten'))), Activity. := '0']
df1
# Id Name Activity.
#1: 1 ABC 0
#2: 3 three case one
#3: 5 five case seven
#4: 9 nine case ten
#5: 2 two 0
#6: 4 four 0
#7: 8 eight 0

关于除少数指定值 R 外,将所有单元格替换为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34392710/

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