【问题标题】:R replacing values on data frames on the flyR动态替换数据帧上的值
【发布时间】:2019-10-17 14:22:26
【问题描述】:

有人可以帮我完成一项我一直坚持的小任务吗?

我有一个带有数据的 df(我们称之为 X),它是数值,我需要用标签替换它。为此我有另一个 df 作为数据映射(我们称之为 Y),所以我实际上需要从 X 中获取一个值,在 Y 上查找它,以获得将进入 X 的标签。

X:
年龄性别地区

 1     2       1

 2     2       3

 2     1       1

Y:

问题值标签

Age        1      18 to 45
Age        2      Over 45
Gender     1      male
Gender     2      female
Region     1      England
Region     2      Scotland
Region     3      Wales

我希望得到的是

Z:

年龄性别区域

18 到 45 岁 - 女性 - 英格兰

45 岁以上 - 女性 - 威尔士

45 岁以上 - 男性 - 英国

当然,我的数据框要大得多,X 有 246 列,Y 有 8k 行和 29 列。你们能帮我看看如何进行这样的替换吗?

谢谢

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    使用 base-r 和 ifelse

    df <- data.frame(Age = c(1,2,2), Gender = c(2,2,1), Region= c(1,3,1))
    
    z$Age = ifelse(df$Age==1, "18 to 45", ifelse(df$Age==2, "Over 45", NA))
    
    z$Gender = ifelse(df$Gender==1, "male", ifelse(df$Gender==2, "female", NA))
    
    z$Region = ifelse(df$Region==1, "England", ifelse(df$Region==2, "Scotland", ifelse(df$Region==3, "Wales",NA)))
    z <- data.frame(z)
    z
    
    # z
    #     Age         Gender   Region
    # 1 18 to 45      female   England
    # 2  Over 45      female   Wales
    # 3  Over 45      male     England
    

    【讨论】:

    • 非常感谢,但考虑到这只是我数据集的一小部分,所以我不能用 ifelse 手动进行映射,已经考虑过了,但我会死此外,它不会考虑未来的数据修改
    • 你可以尝试使用查找表。
    • 正如我所说,第二个表是我的查找表,它是关于如何引用它的更大问题
    猜你喜欢
    • 1970-01-01
    • 2020-05-26
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 2022-09-23
    • 2019-04-05
    相关资源
    最近更新 更多