【发布时间】:2021-04-21 21:34:22
【问题描述】:
我想在不同数据帧的不同列中的观察名称的开头添加“名称”,在末尾添加“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)
【问题讨论】: