我在特定行中有一个具有相同字符的数据框:
a 1
a 3
a 7
b 4
b 8
我想改变它:
a.1 1
a.2 3
a.3 7
b.1 4
b.2 8
你知道R中的任何代码吗?
非常感谢。
答案 0 :(得分:2)
您还可以使用data.table
包:
library(data.table)
setDT(df)[,ix:=paste(V1,1:.N, sep='.'),V1][]
# V1 V2 ix
#1: a 1 a.1
#2: a 3 a.2
#3: a 7 a.3
#4: b 4 b.1
#5: b 8 b.2
数据:强>
df = structure(list(V1 = structure(c(1L, 1L, 1L, 2L, 2L), .Label = c("a",
"b"), class = "factor"), V2 = c(1L, 3L, 7L, 4L, 8L)), .Names = c("V1",
"V2"), class = "data.frame", row.names = c(NA, -5L))
答案 1 :(得分:1)
在基地R,您可以这样做:
df$V1 <- with(df, paste(V1, ave(as.numeric(V1), V1, FUN = seq_along), sep="."))
print(df)
# V1 V2
#1 a.1 1
#2 a.2 3
#3 a.3 7
#4 b.1 4
#5 b.2 8
答案 2 :(得分:0)
我们可以使用dplyr/tidyr
。我们按'V1'分组,创建序列列('VN'),unite
列'V1'和'VN',然后rename
列。
library(dplyr)
library(tidyr)
df %>%
group_by(V1) %>%
mutate(VN = row_number()) %>%
unite(V1n, V1, VN, sep='.') %>%
rename(V1=V1n)
# V1 V2
# (chr) (int)
#1 a.1 1
#2 a.2 3
#3 a.3 7
#4 b.1 4
#5 b.2 8