gpt4 book ai didi

r - 根据已建立的列之间的关系完成部分填充的列

转载 作者:行者123 更新时间:2023-12-03 22:26:14 25 4
gpt4 key购买 nike

我希望完成一个基于彼此的两列,但是它们被部分填充。

 title <- c("Mrs", "Ms", "", "Ms", "Mr", "Mr", "")
gender <- c("female", "", "male", "female", "", "Male", "female")

df <- as.data.frame(cbind(title, gender))

df

title gender
1 Mrs female
2 Ms
3 male
4 Ms female
5 Mr
6 Mr Male

在这个例子中,我们知道如果 title=MrsMs ,则性别应填入 female ,如果 title=Mr那么性别应填写为 male .另一方面,如果只填写性别为 female ,那么标题应该是 Ms ,或用于 male标题应该是 Mr .

除此之外,您如何能够在无需事先建立关系的情况下完成部分填充的表格。请引用以下示例:
c1 <- paste(rep(letters[1:12], 4))
c2 <- paste(rep(letters[13:24], 4))
df <- as.data.frame(cbind(c1, c2), stringsAsFactors=FALSE)

#replacing 8 strings in each column
df[sample(nrow(df), 8),]$c1 <- ""
df[sample(nrow(df), 8),]$c2 <- ""
df

为此,我们知道两个字母(例如, iu )是配对的。但是,某些数据值缺失,其中一列部分完成或为空。我将如何填写本示例中部分完成的值?

(我知道我应该展示我是如何尝试这样做的,但我很困惑,找不到任何东西)

最佳答案

我认为这就是你想要的:

#Find those where there is no title
noTitle = which(df$title=="")
#And fill them in based on the gender
df$title[noTitle] = ifelse(grepl("[Ff]",df$gender[noTitle]), "Ms", "Mr")
#Do the same for gender
noGender = which(df$gender=="")
df$gender[noGender] = ifelse(grepl("[Ss]",df$title[noGender]), "female", "male")

如果它们都是空的,那么将有一个检查开始并适本地转换它们;就像是:
#Find where both empty
Neither = intersect( which(df$title=""), which(df$gender=="") )
##Do something here

关于r - 根据已建立的列之间的关系完成部分填充的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23851608/

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