我有一个包含多个列的数据框.我想创建一个名为"id"的新列,它为"sample"列中的每组相同值提供唯一的ID号.
示例数据:
# dput(df)
df <- structure(list(index = 1:30, val = c(14L, 22L, 1L, 25L, 3L, 34L,
35L, 36L, 24L, 35L, 33L, 31L, 30L, 30L, 29L, 28L, 26L, 12L, 41L,
36L, 32L, 37L, 56L, 34L, 23L, 24L, 28L, 22L, 10L, 19L), sample = c(5L,
6L, 6L, 7L, 7L, 7L, 8L, 9L, 10L, 11L, 11L, 12L, 13L, 14L, 14L,
15L, 15L, 15L, 16L, 17L, 18L, 18L, 19L, 19L, 19L, 20L, 21L, 22L,
23L, 23L)), .Names = c("index", "val", "sample"), class = …Run Code Online (Sandbox Code Playgroud) 我有一个数据框(all_data),其中我有一个网站列表(1 ...到n)和他们的分数,例如
site score
1 10
1 11
1 12
4 10
4 11
4 11
8 9
8 8
8 7
Run Code Online (Sandbox Code Playgroud)
我想创建一个列,按照数字顺序对每个级别的站点进行编号,就像一个计数器.在该示例中,站点(1,4和8)将在"数字"列中具有1到3的相应计数器:
site score number
1 10 1
1 11 1
1 12 1
4 10 2
4 11 2
4 11 2
8 9 3
8 8 3
8 7 3
Run Code Online (Sandbox Code Playgroud)
我相信这一定很容易解决,但我还没有找到办法.
我有一个如下所示的数据帧(df):
School Student Year
A 10 1999
A 10 2000
A 20 1999
A 20 2000
A 20 2001
B 10 1999
B 10 2000
Run Code Online (Sandbox Code Playgroud)
我想创建一个人ID专栏,以便df看起来像这样:
ID School Student Year
1 A 10 1999
1 A 10 2000
2 A 20 1999
2 A 20 2000
2 A 20 2001
3 B 10 1999
3 B 10 2000
Run Code Online (Sandbox Code Playgroud)
换句话说,ID变量指示它在数据集中的哪个人,同时考虑学生编号和学校会员资格(这里我们总共有3个学生).
df$ID <- df$Student如果c("School", "Student)是唯一的,我做了并试图请求值+1 .它不起作用.帮助赞赏.
来自R新手的非常基本的表现问题.我想通过唯一的字段组合为数据框中的每一行分配一个组ID.这是我目前的做法:
> # An example data frame
> df <- data.frame(name=c("Anne", "Bob", "Chris", "Dan", "Erin"),
st.num=c("101", "102", "105", "102", "150"),
st.name=c("Main", "Elm", "Park", "Elm", "Main"))
> df
name st.num st.name
1 Anne 101 Main
2 Bob 102 Elm
3 Chris 105 Park
4 Dan 102 Elm
5 Erin 150 Main
>
> # A function to generate a random string
> getString <- function(size=10) return(paste(sample(c(0:9, LETTERS, letters), size, replace=TRUE), collapse=''))
>
> # Assign a random string for each unique …Run Code Online (Sandbox Code Playgroud) 我为问题的措辞和错误道歉.操作系统和R中的新手
问题:找到有效的方法来填充列,该数字可以唯一地标识另一列中具有相同值的观察值.结果如下所示:
patient_number id
1 46 1
2 47 2
3 15 3
4 42 4
5 33 5
6 26 6
7 37 7
8 7 8
9 33 5
10 36 9
Run Code Online (Sandbox Code Playgroud)
样本数据框
set.seed(42)
df <- data.frame(
patient_number = sample(seq(1, 50, 1), 100, replace = TRUE)
)
Run Code Online (Sandbox Code Playgroud)
我能想到的是什么
df$id <- NA ## create id and fill with NA make if statement easier
n_unique <- length(unique(df$patient_number)) ## how many unique obs
for (i in 1:nrow(df)) { …Run Code Online (Sandbox Code Playgroud)