在R中我有数据
Name number
Peter 14
peter 2
hans 11
...
我的问题是如何找到带有大字母的名字并将它们组合成小写字母。例如,我想要将peter
和Peter
以及number
的总和结合起来,在这种情况下,这是{+ 1}}是14 + 2 = 16。
假设我有超过500个名字,其中一些以小写字母开头,一些以大字母开头 - 我应该如何解决这个问题呢?
感谢。
答案 0 :(得分:3)
您可以将aggregate()
与tolower()
结合使用。因此,所有名称仅转换为小字符。然后使用sum
应用聚合。这可以存储到一个新对象,比方说dfAgg
df <- data.frame(name = c("Peter", "peter", "Hans", "hans"), number = c(14,2,11,3))
dfAgg <- aggregate(number ~ tolower(name), data = df, sum)
dfAgg
# tolower(name) number
# hans 14
# peter 16
答案 1 :(得分:0)
好吧,你可以忽略区分大小写。将所有名称设为上限或下限,然后计算数量。 例如:
答案 2 :(得分:0)
尝试:
names_nums <- read.table(text="Name number
Peter 14
peter 2
hans 11", header=T)
sum(names_nums[tolower(names_nums$Name) == "peter",]$number)
您可以按如下方式获得所有这些的总和:
do.call(rbind,lapply(split(names_nums, tolower(names_nums$Name)), function(x) {
sum(x$number)
}))
谢谢!