我有这样的数据:
ID ATTRIBUTE START END
1 A 01-01-2000 15-03-2010
1 B 05-11-2001 06-02-2002
2 B 01-02-2002 08-05-2008
2 B 01-06-2008 01-07-2008
Run Code Online (Sandbox Code Playgroud)
我现在想要计算每年具有特定属性的不同ID的数量.
结果可能如下所示:
YEAR count(A) count(B)
2000 1 0
2001 1 1
2002 1 2
2003 1 1
2004 1 1
2005 1 1
2006 1 1
2007 1 1
2008 1 1
2009 1 0
2010 1 0
Run Code Online (Sandbox Code Playgroud)
我计算出现次数的第二步可能很容易.
但是,我如何将数据分成多年?
先感谢您!
我有一组矢量V_1, V_2, ..., V_n,我想转换为矩阵.每个向量成为矩阵中的列向量.每个向量的大小是相同的.有这么简单的功能吗?在矩阵部分中The R Book,似乎不存在此函数.
我目前正在做的是:
mat=matrix(c(V1, V2, ..., VN), nrow=length(V1))
Run Code Online (Sandbox Code Playgroud)
编辑:最终目标是k-means使用此矩阵执行聚类.我的载体名称实际上并非如此V_1, V_2, ..., V_n.向量的名称是对应于数据来自的文件名的子串(这是1-1映射).最后,我将迭代特定目录中的所有文件,将数据提取到向量中,然后将每个列向量附加到矩阵.
如何根据单个列中的值"截断"data.frame?例如,如果我有这个矩阵
x <- c(5,1,3,2,4)
y <- c(1,5,3,4,2)
data <- data.frame(x,y)
Run Code Online (Sandbox Code Playgroud)
我希望所有数据的值都大于或等于x,我该怎么做?我知道我可以使用找到x值的地址
addresses <- which(x>=2)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何使用它来制作新的矩阵.以下不起作用:
data2 <- data[x>=2]
data2 <- data[which(x>=2)]
Run Code Online (Sandbox Code Playgroud)
如果有人可以提供任何建议,我真的很感激.
我有一个包含多列的数据框.现在,我想摆脱row.names列(第1列),因此我尝试选择所有其他列.
例如,
newdata <- olddata[,2:10]
Run Code Online (Sandbox Code Playgroud)
是否有最后一列的默认符号,所以我不必计算所有列?我试过了
newdata <- olddata[,2:]
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
假设我有data.frame如下:
a <- data.frame(id=c(1,3,4,5,7,8,9,6,54,3,5,6,87,6))
Run Code Online (Sandbox Code Playgroud)
我有一个矢量temp如下:
temp<-c(1,3,5,9)
Run Code Online (Sandbox Code Playgroud)
现在,我想创建一个新的列flag到我的data.frame,它应该1在那里id是temp和0别处.这是我试过的:
a$flag <- ifelse(a$id==temp, 1, 0)
Run Code Online (Sandbox Code Playgroud)
和期望的输出应该是(1,1,0,1,0,0,1,0,0,1,1,0,0,0).
但是从我上面的代码来看,flag没有得到正确的更新.我在这里错过了什么?可以/应该使用%in%吗?如果是这样,怎么样?
感谢您的任何帮助
我正在尝试重命名多个列的列data.frame.
举个例子,假设我有一个data.frames 列表dfA,dfB和dfC.我写了一个函数changeNames来相应地设置名称,然后使用lapply如下:
dfs <- list(dfA, dfB, dfC)
ChangeNames <- function(x) {
names(x) <- c("A", "B", "C" )
}
lapply(dfs, ChangeNames)
Run Code Online (Sandbox Code Playgroud)
但是,这不能按预期工作.似乎我没有为其分配新名称data.frame,而只是创建新名称.我在这做错了什么?
先感谢您!
我有一个关于在R中聚合值的简单问题
假设我有一个数据帧:
DF <- data.frame(col1=c("Type 1", "Type 1B", "Type 2"), col2=c(1, 2, 3))
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
col1 col2
1 Type 1 1
2 Type 1B 2
3 Type 2 3
Run Code Online (Sandbox Code Playgroud)
我注意到,我有Type 1和Type 1B数据,所以我想结合Type 1B成Type 1.
所以我决定使用dplyr:
filter(DF, col1=='Type 1' | col1=='Type 1B') %>%
summarise(n = sum(col2))
Run Code Online (Sandbox Code Playgroud)
但现在我需要坚持下去:
DF2 <- data.frame('Type 1', filter(DF, col1=='Type 1' | col1=='Type 1B') %>%
summarise(n = sum(col2)))
Run Code Online (Sandbox Code Playgroud)
我想我想把cbind这个新的DF2重新回到原来的DF,但这意味着我必须将列名设置为一致:
names(DF2) <- c('col1', 'col2')
Run Code Online (Sandbox Code Playgroud)
好的,现在我可以回复:
rbind(DF2, DF[3,])
Run Code Online (Sandbox Code Playgroud)
结果?有效.... …
我试图合并两个相当大的 - 但不是荒谬的(360,000 X 4,57,000 X 4) - 一个公共ID的数据集.我已经尝试了常规merge(),merge.data.table()和sqldf().每次我的内存耗尽(cannot allocate vector of size...).这有什么解决方案吗?或者R是合并数据的坏工具吗?head()给出如下(我想在STUDENT.NAME上合并):
ID10 STUDENT.NAME FATHER.NAME MOTHER.NAME
1 1 DEEKSHITH J JAYANNA SWARNA
2 4 MANIKANTHA D DEVARAJ MANJULA
3 5 NAGESH T THIMMAIAH N SHIVAMMA
4 6 NIZAMUDDIN R NOOR MOHAMMED BIBI
5 7 PRABHU YELLAPPA YELLAPPA MALLAMMA
6 8 SADDAM PASHA NISAR AHMED ZAREENA
Run Code Online (Sandbox Code Playgroud) 我有多个帧,为此目的假设2.每个帧包含2列 - 索引列和值列
sz<-5;
frame_1<-data.frame(index=sort(sample(1:10,sz,replace=F)),value=rpois(sz,50));
frame_2<-data.frame(index=sort(sample(1:10,sz,replace=F)),value=rpois(sz,50));
Run Code Online (Sandbox Code Playgroud)
FRAME_1:
index value
1 49
6 62
7 58
8 30
10 50
Run Code Online (Sandbox Code Playgroud)
frame_2:
index value
4 60
5 64
6 48
7 46
9 57
Run Code Online (Sandbox Code Playgroud)
目标是创建第三帧frame_3,其索引将是frame_1和frame_2中的索引的并集,
frame_3<-data.frame(index = sort(union(frame_1$index,frame_2$index)));
Run Code Online (Sandbox Code Playgroud)
它将包含两个额外的列,value_1和value_2.
frame_3 $ value_1将从frame_1 $ value中填写,frame_3 $ value_2将从frame_2 $ value中填写;
这些应该填写如下:frame_3:
index value_1 value_2
1 49 NA
4 49 60 # value_1 is filled through with previous value
5 49 64 # value_1 is filled through with previous value
6 62 48
7 58 …Run Code Online (Sandbox Code Playgroud) 我有一个庞大的数据集,其中有一列包含每个主题(行)的几个值.这是一个简化的示例数据帧:
data <- data.frame(subject = c(1:8), sex = c(1, 2, 2, 1, 2, 1, 1, 2),
age = c(35, 29, 31, 46, 64, 57, 49, 58),
v1 = c("2", "0", "3,5", "2 1", "A,4", "B,1,C", "A and B,3", "5, 6 A or C"))
> data
subject sex age v1
1 1 1 35 2
2 2 2 29 0
3 3 2 31 3,5 # separated by a comma
4 4 1 46 2 1 # separated by a blank …Run Code Online (Sandbox Code Playgroud)