首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中的不同数据中重命名不同列中的观测?

如何在R中的不同数据中重命名不同列中的观测?
EN

Stack Overflow用户
提问于 2021-01-17 11:35:39
回答 1查看 74关注 0票数 1

我想将“名称”添加到开头,"plc“添加到不同数据格式中不同列的观察结果的末尾,除外,中的名称已经在正确的位置上有"Name”或"plc“。下面是一个简单的reprex。

原始数据格式

代码语言:javascript
复制
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

代码语言:javascript
复制
            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

代码语言:javascript
复制
               names2 year2
1  Name Charleton plc  2000
2 Name Birmingham plc  1955
3       Name Tees plc  2001
4    Name Salford plc  2001

My approach:我得到了我想要的结果,但是我有一个包含许多列的大数据集,所以我的方法太重复了。我很难发挥作用,我认为其中一个在这里是有用的:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-17 11:59:51

最简单的方法可能是删除"Name“和"plc”,然后将其添加到所有内容中,如下所示:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65760089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档