我有一个具有以下数字的索引(5、10、15、17)。该索引是从大型csv文件生成的,并且与该文件中这些短语的顺序相对应。最终,id希望将这些短语与循环生成的新列映射回去。
每个索引都与一个短语相关联。我的代码分隔了短语,并根据短语中的单词创建了列。我需要在数据框中创建另一列,并使用与每个短语对应的索引号。
For example:
column 1 column 2 index
phrase A book 5
phrase A tree 5
phrase B tree 10
我如何在循环中获得此结果,并确保索引随着第1列中的每个新输入而变化。
答案 0 :(得分:3)
像这样吗?
Events.on(EventNames.HELLO_WORLD, () => {});
数据创建代码。
index_by <- function(DF, group, index_list = NULL){
f <- ave(as.character(DF[[group]]), DF[[group]], FUN = function(x) rnorm(1))
i <- as.integer(factor(f, levels = unique(f)))
if(is.null(index_list)) i else index_list[i]
}
df1$index <- index_by(df1, "column1")
df1$index2 <- index_by(df1, "column1", c(5, 10, 15, 17))
df1
# column1 index index2
#1 phrase 1 1 5
#2 phrase 1 1 5
#3 phrase 1 1 5
#4 phrase 1 1 5
#5 phrase 2 2 10
#6 phrase 2 2 10
#7 phrase 3 3 15
#8 phrase 3 3 15
#9 phrase 3 3 15
#10 phrase 4 4 17
答案 1 :(得分:1)
您可以在tidyverse中使用group_indices()
。这是一个将制造商设置的mpg
数据分组的示例。
library(tidyverse)
mpgGroupNbr <- mpg %>%
arrange(manufacturer) %>%
group_by(manufacturer) %>%
mutate(groupNbr = group_indices()*5)
#check coding - max/min should be the same if coded correctly
mpgGroupNbr %>%
group_by(manufacturer) %>%
summarize(max = max(groupNbr), min = min(groupNbr))
结果:
manufacturer max min
<chr> <dbl> <dbl>
1 audi 5 5
2 chevrolet 10 10
3 dodge 15 15
4 ford 20 20
5 honda 25 25
6 hyundai 30 30
7 jeep 35 35
8 land rover 40 40
9 lincoln 45 45
10 mercury 50 50
11 nissan 55 55
12 pontiac 60 60
13 subaru 65 65
14 toyota 70 70
15 volkswagen 75 75