如何更改Na与其他列?

时间:2019-09-03 11:57:34

标签: r dataframe

我有2个指示器:

       licence     age.6-17
         Na         1
         1          0
         Na         0
         0          1

如果一个人的年龄超过17岁(第二列为0),我如何将Na更改为1,否则将其更改为0?

输出

       licence     age.6-17
         0          1
         1          0
         1          0
         0          1

3 个答案:

答案 0 :(得分:2)

使用{{ form.cleaned_data.username }}dplyr

ifelse

无需更改yourdata %>% mutate(licence = ifelse(`age.6-17` == 0, 1,0)) 的性质或列名。

此外,如果您只需要替换"Na"个单元格,则考虑到"Na"是此处的字符串

"Na"

如果是yourdata %>% mutate(licence = ifelse(licence == "Na" & `age.6-17` == 0, 1,0)) ,则需要<NA>而不是is.na(licence)

答案 1 :(得分:2)

base 中,您可以使用is.na子集,然后从1中减去age.6.17的值。

x  <- read.table(header=T, na.string="Na", text="licence     age.6-17
         Na         1
         1          0
         Na         0
         0          1")

idx <- is.na(x$licence)
x$licence[idx]  <- 1-x$age.6.17[idx]
x
#  licence age.6.17
#1       0        1
#2       1        0
#3       1        0
#4       0        1

或者如果您忽略实际存储在列licence中的内容,则可以使用:

with(x, data.frame(licence=1-age.6.17, age.6.17))
#  licence age.6.17
#1       0        1
#2       1        0
#3       1        0
#4       0        1

答案 2 :(得分:1)

假设您的class ParentViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() menuViewController = DrawerMenuViewController() menuViewController.view.frame = CGRect( x: view.frame.maxX, y: 0, width: view.bounds.width, height: UIScreen.main.bounds.height) view.addSubview(menuViewController.view) addChild(menuViewController) menuViewController.didMove(toParent: self) } } 是实际的NA,我们可以在NA中使用case_when并应用条件。

dplyr

数据

library(dplyr)

df %>%
  mutate(licence = case_when(is.na(licence) & age.6.17 == 0 ~ 1L, 
                             is.na(licence) & age.6.17 == 1 ~ 0L, 
                             TRUE ~ licence))

#  licence age.6.17
#1       0        1
#2       1        0
#3       1        0
#4       0        1