【发布时间】:2016-02-16 22:31:19
【问题描述】:
我是 R 初学者,也许有人应该已经问过这个问题,但我找不到答案。
我的数据是这样的。
id_lance <-c("300_09_11", "400_09_11", "400_09_11", "400_09_11", "500_06_08",
"500_06_08", "500_09_11", "600_06_08" , "700_09_11", "700_09_11")
especie <-c("esp1", "esp1", "esp1", "esp2", "esp2", "esp3", "esp2", "esp3",
"esp3", "esp4")
abundancia <-as.numeric (c("190", "267","76", "111", "34", "334", "777", "1067",
"19", "255"))
df = data.frame(id_lance, especie, abundancia)
matriz <-as.data.frame(tapply(df$abundancia,list(df$especie,
df$id_lance),sum))
matriz[] <- lapply(matriz,function(x) replace(x, is.na(x), 0))
我想通过提取前 3 个数字来重命名列名,即“300_09_11”到“300”等等。
我一直在尝试分别使用strsplit和gsub,然后再一起尝试,但没有成功。我不知道是否可以通过循环或类似的失败尝试来完成。
names(matriz) <- gsub(strsplit(names(matriz), "_"),
paste0(substr(names(matriz)[[1]], 1, 3), names(matriz)))
谁能帮帮我?谢谢。
【问题讨论】: