我对R来说还是比较新的,如果我的问题看起来太基础,请提前道歉.
我的问题如下:
我有一个包含几个因子变量的数据集,它们具有相同的类别.我需要找到这个类别,这个类别最常出现在因子变量的每个观察中.在关系的情况下,可以选择任意值,尽管如果我可以对其进行更多控制则会很好.
我的数据集包含一百多个因素.但是,结构是这样的:
id <- 1:3
var1 <- c("red","yellow","green")
var2 <- c("red","yellow","green")
var3 <- c("yellow","orange","green")
var4 <- c("orange","green","yellow")
df <- data.frame(cbind(id, var1, var2, var3, var4))
> df
id var1 var2 var3 var4
1 1 red red yellow orange
2 2 yellow yellow orange green
3 3 green green green yellow
Run Code Online (Sandbox Code Playgroud)
解决方案应该是数据框中的变量,例如var5,它包含每行的最常见类别.它可以是因子或数字向量(如果数据需要首先转换为数字向量)
在这种情况下,我想有这个解决方案:
> df$var5
[1] "red" "yellow" "green"
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激!提前致谢!
我正在尝试使用类似的格式连接 R 中数据帧中的两行
row1 <- c("A","B","C")
row2 <- c(1:3)
dat <- data.frame(rbind(row1,row2))
dat
X1 X2 X3
row1 A B C
row2 1 2 3
Run Code Online (Sandbox Code Playgroud)
我想要第三排的类型
row3 A-1 B-2 C-3
Run Code Online (Sandbox Code Playgroud)
有人可以帮我使用粘贴功能来做到这一点吗?我一直在尝试以下方法但没有成功:
> paste(dat[1,], dat[2,], sep="-")
[1] "2-1" "2-1" "2-1"
> paste(as.character(dat[1,]), dat[2,], sep="-")
[1] "2-1" "2-1" "2-1"
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我需要检查大数据集中的年份值是否连续。
这是数据的样子:
b <- c(2011,2012,2010, 2009:2011, 2013,2015,2017, 2010,2010, 2011)
dat <- data.frame(cbind(a,b))
dat
a b
1 1 2011
2 1 2012
3 1 2010
4 2 2009
5 2 2010
6 2 2011
7 3 2013
8 3 2015
9 3 2017
10 4 2010
11 4 2010
12 5 2011
Run Code Online (Sandbox Code Playgroud)
这是我写的函数。它在小数据集上效果很好。然而,真实的数据集非常大,有 20 万个 id,而且需要很长时间。我该怎么做才能让它更快?
seqyears <- function(id, year, idlist) {
year <- as.numeric(year)
year_values <- year[id==idlist]
year_sorted <- year_values[order(year_values)]
year_diff <- diff(year_sorted)
answer <- unique(year_diff)
if(length(answer)==0) {return("single line")} else …Run Code Online (Sandbox Code Playgroud)