我有一个21638个*行的表:
vocabulary <- read.table("http://socserv.socsci.mcmaster.ca/jfox/Books/Applied-Regression-2E/datasets/Vocabulary.txt", header=T)
Run Code Online (Sandbox Code Playgroud)
该表有五列,第一列包含受访者ID号.我想检查是否有任何受访者出现两次,或者所有受访者是否都是独特的.
要计算我可以使用的唯一ID
length(unique(vocabulary$id))
Run Code Online (Sandbox Code Playgroud)
并检查我是否有任何重复
length(unique(vocabulary$id)) == nrow(vocabulary)
Run Code Online (Sandbox Code Playgroud)
TRUE如果没有重复项(没有重复项),则返回.
我的问题:
有没有直接的方法来返回重复的值或行号?
进一步说明:
使用该函数存在解释问题duplicated(),因为只返回严格意义上的重复项,不包括"原件".例如,sum(duplicated(vocabulary$id))或者dim(vocabulary[duplicated(vocabulary$id),])[1]可能返回"5"作为重复行的数量.问题是,如果您只知道重复项的数量,则不会知道它们复制了多少行."5"是否意味着有五行,每行有一个重复,或者有一行有五个重复?由于您不会拥有重复项的ID或行号,因此您无法找到"原件".
*我知道此次调查中没有重复的ID,但这是一个很好的例子,因为使用此问题的其他地方给出的任何答案,duplicated(vocabulary$id)或者table(vocabulary$id)将大海捞针输出到您将无法找到的屏幕上任何可能罕见的重复针.
我有这样的数据,其中一些"名称"出现超过3次:
df <- data.frame(name = c("a", "a", "a", "b", "b", "c", "c", "c", "c"), x = 1:9)
name x
1 a 1
2 a 2
3 a 3
4 b 4
5 b 5
6 c 6
7 c 7
8 c 8
9 c 9
Run Code Online (Sandbox Code Playgroud)
我希望根据"name"变量的每个级别内的行数(观察值)对数据进行子集化(过滤).如果某个级别的"名称"出现超过3次,我想删除属于该级别的所有行.
我写了这段代码,但无法让它工作.
name x
1 a 1
2 a 2
3 a 3
4 b 4
5 b 5
Run Code Online (Sandbox Code Playgroud) 我有以下数据:
x1 x2 x3 x4
34 14 45 53
2 8 18 17
34 14 45 20
19 78 21 48
2 8 18 5
Run Code Online (Sandbox Code Playgroud)
在第1行和第3行; 第2列和第5列的列X1; X2,X3的值相等.如何仅输出4行,数字相同?输出应采用以下格式:
x1 x2 x3 x4
34 14 45 53
34 14 45 20
2 8 18 17
2 8 18 5
Run Code Online (Sandbox Code Playgroud)
如果不清楚,请问我问题.
附加问题:在输出中
x1 x2 x3 x4
34 14 45 53
34 14 45 20
2 8 18 17
2 8 18 5
Run Code Online (Sandbox Code Playgroud)
在最后一列中找到值的总和:
x1 x2 x3 x4
34 14 45 73
2 …Run Code Online (Sandbox Code Playgroud)