我想将“名称”添加到不同数据帧中不同列中观察值名称的开头和“ plc”的末尾,除非名称在正确的位置已经有“名称”或“ plc”。以下是一个简单的代表。
原始数据框
names1a <- c("Name Alperton plc", "Bury", "Central", "Durham")
names1b <- c("Egham plc", "Fulton", "Great", "Heywood plc")
year1 <- c(1999, 2000, 2001, 2001)
df1 <- data.frame(names1a, names1b, year1)
names2 <- c("Charleton plc", "Birmingham", "Name Tees", "Salford")
year2 <- c(2000, 1955, 2001, 2001)
df2 <- data.frame(names2, year2)
所需结果:
df1
names1a names1b year1
1 Name Alperton plc Name Egham plc 1999
2 Name Bury plc Name Fulton plc 2000
3 Name Central plc Name Great plc 2001
4 Name Durham plc Name Heywood plc 2001
df2
names2 year2
1 Name Charleton plc 2000
2 Name Birmingham plc 1955
3 Name Tees plc 2001
4 Name Salford plc 2001
我的方法:我得到了想要的结果,但是我有一个包含许多列的大型数据集,所以我的方法太重复了。我在创建函数方面很费力,我认为这里有用的是:
df1$names1a <- sub("$", " plc", df1$names1a)
df1$names1b <- sub("$", " plc", df1$names1b)
df2$names2 <- sub("$", " plc", df2$names2)
df1$names1a <- sub("plc plc", "plc", df1$names1a)
df1$names1b <- sub("plc plc", "plc", df1$names1b)
df2$names2 <- sub("plc plc", "plc", df2$names2)
df1$names1a <- sub("^", "Name ", df1$names1a)
df1$names1b <- sub("^", "Name ", df1$names1b)
df2$names2 <- sub("^", "Name ", df2$names2)
df1$names1a <- sub("Name Name", "Name", df1$names1a)
df1$names1b <- sub("Name Name", "Name", df1$names1b)
df2$names2 <- sub("Name Name", "Name", df2$names2)
最简单的方法可能是删除“名称”和“ plc”,然后将其添加到所有内容中,如下所示:
f <- function(x) paste("Name", trimws(gsub("^Name|plc$", "", x)), "plc")
cols <- c("names1a", "names1b")
df1[cols] <- lapply(df1[cols], f)
df1
# names1a names1b year1
# 1 Name Arton plc Name Egh plc 1999
# 2 Name Bury plc Name Futon plc 2000
# 3 Name Cntr plc Name Grt plc 2001
# 4 Name Durh plc Name Hywood plc 2001
df2$names2 <- f(df2$names2)
df2
# names2 year2
# 1 Name Chrton plc 2000
# 2 Name Biringh plc 1955
# 3 Name Ts plc 2001
# 4 Name Sford plc 2001
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句