我正在使用如下所示的数据框(让我们调用MyData)。我想做的是按PatientKey分组并创建一个名为NewID的新ID。每次对于同一个PatientKey,时间之间的测试是
PatientKey TimeBetweenTests NewId
1 0 NewId should be 1 (first patient)
1 0 NewId should be 1
1 1 NewId should be 1
1 2 NewId should be 1
2 3 NewId should be 2 (new patient)
3 4 NewId should be 3 (new patient)
3 16 NewId should be 4 (same patient but TimeBetweenTests > 14)
3 80 NewId should be 5 (same patient but TimeBetweenTests > 14)
4 3 NewId should be 6 (new patient)
4 0 NewId should be 6 (new patient)
4 90 NewId should be 7 (same patient but TimeBetweenTests > 14)
4 110 NewId should be 8 (same patient but TimeBetweenTests > 14)
5 3 NewId should be 9 (new patient)
5 3 NewId should be 9
5 3 NewId should be 9
etc
我尝试过使用dplyr来实现这一点,但问题是,当我尝试类似于以下代码时,后续值没有改变:
对象
任何人都有方便的dplyr或数据。表格解决方案,或者循环方法。
试试这个
library(dplyr)
df %>% mutate(NewID = cumsum(lag(PatientKey, default = 0) != PatientKey | TimeBetweenTests > 14)
输出
PatientKey TimeBetweenTests NewID
<dbl> <dbl> <int>
1 1 0 1
2 1 0 1
3 1 1 1
4 1 2 1
5 2 3 2
6 3 4 3
7 3 16 4
8 3 80 5
9 4 3 6
10 4 0 6
11 4 90 7
12 4 110 8
13 5 3 9
14 5 3 9
15 5 3 9
我有一个这样的数据集 我想创建列(visit_no)。每当间隙大于1时,我们需要在接下来的行中将visit_no值增加1,直到我们找到另一个值,它将保持不变 这是数据框架
通常都听到别人说,计算机很牛逼,很聪明,其实计算机一点都不聪明,光是你要跟他沟通,都会气 shi 你,聪明的是在写程序的你。 写程序就是跟计算机沟通,告诉它要做什么。 竟然是这样,那么肯定缺少不了一些沟通逻辑。比如你要告诉计算机在什么情况下做什么?或者在哪个时间点做什么? 这都需要用到逻辑判断。这一章节,主要就是说这个。 目录
我试图为数据集创建多水平条形图。这些数据涉及跑步比赛的比赛时间。 Dataframe有以下列:名称、年龄组、完成时间、完成地点、家乡。下面是示例数据。 我想创建一个类似下图的条形图。每个年龄组将有一个条形图,最快的跑步者在图表的底部,跑步者的名字与城市和次数跑了比赛低于他们的名字。 我需要一个for循环还是一个简单的groupby工作?每个年龄组的数量和大小可以根据种族动态变化,因此它不是一个常数
if 是flash的常用语法之一,其格式如下 if(coditon) statement1 (else statement2) 其中,coditon可以是任何表达式,甚至不比是真正的布尔值,因为JavaScript会将其自动转化为布尔值。 如果条件执行结果为true,则执行statement1,如果条件为false,则执行结果statment2,(如果statement2存在,则else不是必须的
跟其它程序设计语言一样,Bash中的条件语句让我们可以决定一个操作是否被执行。结果取决于一个包在[[ ]]里的表达式。 条件表达式可以包含&&和||运算符,分别对应 与 和 或 。除此之外还有很多有用的表达式。 共有两个不同的条件表达式:if和case。 基元和组合表达式 由[[ ]](sh中是[ ])包起来的表达式被称作 检测命令 或 基元。这些表达式帮助我们检测一个条件的结果。在下面的表里,为
条件语句体应该总是被大括号包围。尽管有时候你可以不使用大括号(比如,条件语句体只有一行内容),但是这样做会带来问题隐患。比如,增加一行代码时,你可能会误以为它是 if 语句体里面的。此外,更危险的是,如果把 if 后面的那行代码注释掉,之后的一行代码会成为 if 语句里的代码。 推荐: if (!error) { return success; } 不推荐: if (!error)