【问题标题】:How to convert string booleans expressed in local language into boolean如何将以本地语言表示的字符串布尔值转换为布尔值
【发布时间】:2021-12-24 02:56:13
【问题描述】:

我有一个以本地语言收集的大型数据集,其中每个布尔列使用单词“PRAWDA”表示 TRUE,使用“FAŁSZ”表示 FALSE。

到目前为止,数据框将这些值存储为具有 2 个级别的因子的列:“FAŁSZ”和“PRAWDA”。 我的目标是让该列充满布尔值,而不是字符串值。

如何将所有用波兰语表示的布尔值转换为英语?

【问题讨论】:

  • 您能否将您的数据添加为dput。也许只是将 FALSZ 映射到 FALSE 并将 PRAWDA 映射到 TRUE 并使用 ifelse(string=="PRAWDA", TRUE, FALSE) 假设这就是全部。否则嵌套 ifelse?

标签: r boolean data-cleaning data-conversion


【解决方案1】:

如果它只是一个布尔值,则使用== 来检查“PRAWDA”,对于匹配“PRAWDA”的情况返回 TRUE,否则返回 FALSE。由于只有两个值,这就足够了

df1$col2 <- df1$col1 == 'PRAWDA'

如果有多个列,使用循环

df1[] <- lapply(df1, function(x) if(all(x %in% c('PRAWDA', 'FALSZ'), na.rm = TRUE)) x == 'PRAWDA' else x)

【讨论】:

  • 它会起作用,但尽管是布尔变量,数据框也充满了数值。我不能将此方法应用于所有列,因为它也会修改数字
  • @AdamKuzański 你的问题我不清楚。我展示的代码将单列(因为我假设您的问题是关于单列)转换为布尔值
  • @AdamKuzański 另外,如果您的语言环境设置是波兰语,那么即使as.logical(df1$col1) 也应该可以工作
  • 是的,我没有在问题中清楚地写出来,但无论如何你的建议应该适用于我的情况。谢谢:)
  • @AdamKuzański 此外,某些情况下type.convert(df1, as.is = TRUE) 也应该有效。不过,这取决于您的语言环境设置。我更新了多列的情况
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
  • 2011-02-17
  • 2012-04-02
  • 2021-02-23
  • 2013-03-23
相关资源
最近更新 更多