相关疑难解决方法(0)

按组添加ID列

我想基于两列纬度和经度在R中创建唯一ID,以便重复的位置具有相同的群集ID.

例如:

LAT        LONG    Cluster_ID
13.5330 -15.4180   1
13.5330 -15.4180   1
13.5330 -15.4180   1
13.5330 -15.4180   1
13.5330 -15.4170   2
13.5330 -15.4170   2
13.5330 -15.4170   2
13.5340 -14.9350   3
13.5340 -14.9350   3
13.5340 -15.9170   4
13.3670 -14.6190   5
Run Code Online (Sandbox Code Playgroud)

validation r unique

19
推荐指数
3
解决办法
1万
查看次数

R - 按变量分组,然后分配唯一ID

我有兴趣去除具有时间固定和时变值的敏感数据集.我想(a)按社会安全号码对所有案件进行分组,(b)为这些案件分配一个唯一的ID,然后(c)删除社会安全号码.

这是一个示例数据集:

personal_id    gender  temperature
111-11-1111      M        99.6
999-999-999      F        98.2
111-11-1111      M        97.8
999-999-999      F        98.3
888-88-8888      F        99.0
111-11-1111      M        98.9
Run Code Online (Sandbox Code Playgroud)

任何解决方案都将非常感谢.

r dplyr

16
推荐指数
2
解决办法
2万
查看次数

根据两列分配唯一ID

我有一个如下所示的数据帧(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 multiple-columns

10
推荐指数
2
解决办法
2万
查看次数

在R中创建data.frame列组合的索引

这个问题是一种与此相关的一个,但是我想创建使用两种data.frame列的独特组合的指数.所以我的数据结构看起来像这样(dput):

structure(list(avg = c(0.246985988921473, 0.481522354272779, 
0.575400762275067, 0.14651009243539, 0.489308880181752, 0.523678968337178
), i_ID = c("H", "H", "C", "C", "H", "S"), j_ID = c("P", "P", 
"P", "P", "P", "P")), .Names = c("avg", "i_ID", "j_ID"), row.names = 7:12, class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

因此,上述结构的创建索引应如下所示

1
1
2
2
1
3
Run Code Online (Sandbox Code Playgroud)

在示例数据中,列j_ID始终具有值P,但情况并非总是如此.此外,反之亦然(SP或PS)组合应该产生相同的索引.

有人知道一个很好的方法来实现这一目标吗?我可以用很多for循环和if-else命令来做,但那不是很优雅.

indexing r dataframe

9
推荐指数
1
解决办法
2483
查看次数

在 R 中创建唯一的随机组 ID

我正在尝试在不使用 for 循环的情况下创建一个唯一的、随机分配的(无替换)组 ID。这是我得到的:

library(datasets)
library(dplyr)

data(iris)

iris <- iris  %>% group_by(Species) %>% mutate(id = cur_group_id())

Run Code Online (Sandbox Code Playgroud)

这给了我每个 iris$Species 的组 id,但是,我希望组 id 从 c(1,2,3) 随机分配,而不是根据数据集的顺序分配。

任何帮助创建它都会非常有帮助!我确信有一种方法可以用 dplyr 做到这一点,但我很难过......

r dataframe dplyr

6
推荐指数
1
解决办法
462
查看次数

使用数字填充列的有效方法,用于标识列中具有相同值的观察值

我为问题的措辞和错误道歉.操作系统和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)

r

5
推荐指数
2
解决办法
60
查看次数

为每列多个数据表分配唯一ID

我想为每个多列值为数据表的行分配唯一的ID.让我们考虑一个简单的例子:

library(data.table)       
DT = data.table(a=c(4,2,NA,2,NA), b=c("a","b","c","b","c"), c=1:5)

    a b c
1:  4 a 1
2:  2 b 2
3: NA c 3
4:  2 b 4
5: NA c 5
Run Code Online (Sandbox Code Playgroud)

我想基于列a和b生成ID,并期望获得三个ID,其中第二和第四行ID相同,第三行和第五行也具有相同的ID.

我看过两个解决方案,但每个都略有不完整:

1)解决方案一需要排序数据表,如果我们需要为每个列生成ID(在我的实际应用中,ID是基于大约十列生成的),这非常麻烦.我们可以替换cumsum功能,因此不需要排序吗?

DT$ID1 <- cumsum(!duplicated(DT[,1:2]))
Run Code Online (Sandbox Code Playgroud)

2)解决方案二忽略NA值; 虽然我想包括NA并为他们分配一个组ID

DT <- transform(DT, ID2 = as.numeric(interaction(a,b, drop=TRUE)))
Run Code Online (Sandbox Code Playgroud)

我感谢有关如何修改任一解决方案以生成如下所示的Expected_ID的任何建议.

    a b c ID1 ID2 Expected_ID
1:  4 a 1   1   1           1
2:  2 b 2   2   2           2
3: NA c 3   3  NA           3
4:  2 b 4   3   2           2 …
Run Code Online (Sandbox Code Playgroud)

group-by r data.table

4
推荐指数
1
解决办法
846
查看次数

在 mutate 管道中按组获取唯一 ID

自从新的 dplyr v1.0.0 更新出来后,我注意到该功能group_indices()已被...弃用。我在工作中经常使用这个功能,我喜欢在mutate.

例如使用dplyr v0.8.3我能够很容易地做这样的事情:

#注意,我没有运行此代码,因为我的机器上不再有 v0.8.3。

library(dplyr) # v0.8.3
rep_data <- data.frame(
  x = c("a", "a", "a", "a", "b", "b", "b", "c"),
  y = c("v1", "v1", "v2", "v3", "v1", "v2", "v3", "v3"),
  expect_output = c(1, 1, 2, 3, 4, 5, 6, 7)
)
rep_data %>%
  mutate(expect_output2 = group_indices(x, y))
Run Code Online (Sandbox Code Playgroud)

expect_output2应该有效地给出与expect_output.

现在...不推荐使用它们,我想不再使用它们,但我不确定如何做与上面相同的事情。

我基本上是在这里问这个问题,但这个问题现在在新dplyr版本中已经过时了。

当我使用上面的代码运行时,dplyr v1.0.0我收到警告消息:

Warning message:
The `...` argument …
Run Code Online (Sandbox Code Playgroud)

r dplyr

4
推荐指数
1
解决办法
711
查看次数

如何在 R 中“重新启动”cur_group_id()

我正在尝试使用的 group_by 和 cur_group_id() 函数创建一个 id 列。这很顺利,但是我希望 cur_group_id() 根据分组变量之一“重新启动”。

示例数据:

df <- data.frame(
    X = c(1,1,1,1,1,2),
    Y = c(1,1,1,2,2,3),
    Z = c(1,1,2,3,3,4)
)
# which looks like this
df
X  Y  Z
1  1  1
1  1  1
1  1  2
1  2  3
1  2  3
2  3  4
Run Code Online (Sandbox Code Playgroud)

我当前的代码和输出:

library(dplyr)
library(magrittr)
df %<>% 
    group_by(X, Y, Z) %>%
    mutate(ID = cur_group_id()) %>%
    ungroup()

df
X  Y  Z  ID
1  1  1  1
1  1  1  1
1 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

4
推荐指数
1
解决办法
315
查看次数

R:将dplyr组标签添加为数字

我无法解决这个必须完成的任务。如何获得作为连续数字的组标签。

library(dplyr)
set.seed(1)
df <- data.frame(id = sample(c('a','b'), 20, T),
                 name = sample(c('N1', 'N2', 'N3'), 20, T),
                 val = runif(20)) %>%
  group_by(id) %>% 
  arrange(id, name)
Run Code Online (Sandbox Code Playgroud)

我想要的是一个标签group_no,指示name每个iddplyr组中变量的类别数量。我在dplyr软件包本身中找不到解决方案。像这样:

# A tibble: 20 x 4
# Groups:   id [2]
   id    name     val group_no
   <fct> <fct>  <dbl>     <int>
 1 a     N1    0.647          1
 2 a     N1    0.530          1
 3 a     N1    0.245          1
 4 a     N2    0.693          2
 5 a     N2    0.478          2
 6 a     N2    0.861          2 …
Run Code Online (Sandbox Code Playgroud)

grouping r dplyr

2
推荐指数
2
解决办法
954
查看次数

按唯一元素对值进行分组

我有一个看起来像这样的矢量:

a <- c("A110","A110","A110","B220","B220","C330","D440","D440","D440","D440","D440","D440","E550")
Run Code Online (Sandbox Code Playgroud)

我想创建另一个基于a的另一个向量,它看起来像:

b <- c(1,1,1,2,2,2,3,4,4,4,4,4,4,5)
Run Code Online (Sandbox Code Playgroud)

换句话说,b应该为a的每个不同元素分配一个值(从1开始).

r

1
推荐指数
1
解决办法
88
查看次数

R 将字符串数据帧转换为唯一数字

我有一个非常大的数据框(假设有 8 行 x 10,000 列),其中充满了字符串。我想将每个唯一的字符串转换为数字并用它替换。

例如,如果我有一个数据框:

   X1       X2       X3
1 cat    mouse     rabbit
2 dog   cat, dog    dog
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

   X1        X2     X3
1   1         2       3
2   4         5       4
Run Code Online (Sandbox Code Playgroud)

请注意,“猫,狗”的组合标签有自己的唯一编号。每个字符串的实际编号是无关紧要的,因为我这样做是为了评估者间的可靠性计算。

如果我没有获得所有独特的元素,为它们分配一个数字并替换,是否有更优雅的方法来做到这一点?

另外,如果元素中的值为空,例如“”,则应将其转换为数字 DF 中的 NA。

string r dataframe r-factor

0
推荐指数
1
解决办法
77
查看次数