我想合并:
to_graph <- structure(list(Teacher = c("BS", "BS", "FA"
), Level = structure(c(2L, 1L, 1L), .Label = c("BE", "AE", "ME",
"EE"), class = "factor"), Count = c(2L, 25L, 28L)), .Names = c("Teacher",
"Level", "Count"), row.names = c(NA, 3L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
和
graph_avg <- structure(list(Teacher = structure(c(1L, 1L, 2L), .Label = c("BS",
"FA"), class = "factor"), Count.Fraction = c(0.0740740740740741,
0.925925925925926, 1)), .Names = c("Teacher", "Count.Fraction"
), row.names = c(NA, -3L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
用merge(to_graph, graph_avg, by="Teacher")
,但不是得到我期望的(3行),我得到:
Teacher Level Count …
Run Code Online (Sandbox Code Playgroud) 我正在尝试重塑数据帧:
目前它看起来像这样:
ID | Gender |A1 | A2 | A3 | B1 | B2 | B3
ID_1 | m | 3 | 3 | 3 | 2 | 3 | 2
ID_2 | f | 1 | 1 | 1 | 4 | 4 | 4
Run Code Online (Sandbox Code Playgroud)
我希望有类似的东西:
ID | Gender | A1 | A2 | A3
ID_1 | m | 3 | 3 | 3 <- this would be columns A1 - A3 for ID 1
ID_1 | m | …
Run Code Online (Sandbox Code Playgroud) 这个问题涵盖了我有一个列列表的情况,我希望将它们变成一个data.frame.如果我有一个行列表,并希望将它们转换为data.frame,该怎么办?
rowList <- lapply(1:500000,function(x) sample(0:1,300,x))
Run Code Online (Sandbox Code Playgroud)
解决这个问题的天真方法是使用rbind
和as.data.frame
,但我们甚至无法超越这rbind
一步:
>Data <- do.call(rbind,vectorList)
Error: cannot allocate vector of size 572.2 Mb
Run Code Online (Sandbox Code Playgroud)
这样做效率更高?
我正在寻找一个很好的数据库解决方案来存储大量的科学数据(大约100 GB到TB)。理想情况下,它将能够处理大量数据。
我的数据文件是“图像”,一个约400万个条目数组(1000x1000x3个整数+ 1000x1000浮点数),以及每个图像约50-100个条目的相关元数据。元数据分层存储。图像将被组织成一个或几个“文件夹”(或“项目”),它们本身可以包含其他文件夹。一切都有所有者,等等。
我将需要主要基于其元数据在一个或几个文件夹中搜索100-10,000张图像。然后,我可能需要从图像中提取切片-如果只需要一部分数据,我真的不想加载所有数据。图像应以压缩格式存储。
编辑:需要强调的是,我缺乏统一的数据。例如,图像是未知尺寸的浮点数或整数,通常具有10 ^ 5-10 ^ 6个条目,每个图像的元数据数量可能会有所不同。当然,跨图像搜索元数据将仅限于具有相同键的图像。
我目前(不是很好)的解决方案是混合数据库。首先,我使用一个SQL数据库(现在为Django + MySQL)来处理“文件夹”,所有者,并且每个图像都有一条记录,但没有任何数据。我也可能为元数据创建记录。其次,我正在使用PyTables以hdf5格式存储图像和元数据,并将其像数据库一样对待。这解决了切片和压缩问题,并允许我分层存储元数据,但是PyTables似乎没有可伸缩性,并且开发程度远不及商业数据库。(它不是针对多用户环境而设计的:我正在编写自己的锁!这是一个不好的信号。)
我不是一名硬核程序员,因此强烈建议使用标准数据库解决方案。我的“优化”肯定会包括维护和编程成本。谁能推荐喜欢的数据库解决方案或体系结构?关于关系vs等级vs其他的想法?
选项可能是SciDB(不常见,可能很好),SQL(听说这些应用程序对PostgreSQL不利)和HBase(实际上,我对此一无所知)。我觉得科学界尤其是天文学界必须有好的解决方案,但是大型项目似乎需要一支认真的团队来建立和维护。
我很乐意提供更多信息。
我有一个非常大的data.table,其中(大量)项目由包括文本和数字的字符串定义.
library(data.table)
dd <- data.table(x = c("A4","A4","A4","A14","A14","A14","B4","B4","B4"),y = c("A4","A14","B4","A4","A14","B4","A4","A14","B4"), z = c(1,2,3,4,5,6,7,8,9))
x y z
A4 A4 1
A4 A14 2
A4 B4 3
A14 A4 4
A14 A14 5
A14 B4 6
B4 A4 7
B4 A14 8
B4 B4 9
Run Code Online (Sandbox Code Playgroud)
数字可以是单数字或双数字,因此R将始终根据数字中的第一个数字(A4之前的A14)对它们进行排序.Mixedsort可以处理这个问题.但是,当我将长数据重塑为宽数据时
wide <- dcast(dd, x ~ y, value.var = "z")
Run Code Online (Sandbox Code Playgroud)
R根据基本排序规则再次应用排序.
x A14 A4 B4
A14 5 4 6
A4 2 1 3
B4 8 7 9
Run Code Online (Sandbox Code Playgroud)
然而,我需要以下矩阵计算的原始顺序.有没有有效的方法将字符串+单个数字重命名为字符串+双数字(A4 - > A04)或我错过的另一种方法?
我正在尝试重构一个巨大的数据帧(大约12.000个案例):在旧的数据帧中,一个人是一行,有大约250列(例如人1,测试A1,testA2,testB,......),我想要所有的结果测试A(1 - 10 A的总体和24个项目(AY)在一列中的那个人,所以一个人最终有24列和10行.在AY项目开始之前还有一个固定的数据框部分(个人)像年龄,性别等信息,我希望保持原样(fixdata).函数/循环适用于30个案例(我提前尝试过)但是对于12.000它仍然在计算,现在将近24小时.有什么想法吗?
restructure <- function(data, firstcol, numcol, numsets){
out <- data.frame(t(rep(0, (firstcol-1)+ numcol)) )
names(out) <- names(daten[0:(firstcol+numcol-1)])
for(i in 1:nrow(daten)){
fixdata <- (daten[i, 1:(firstcol-1)])
for (j in (seq(firstcol, ((firstcol-1)+ numcol* numsets), by = numcol))){
flexdata <- daten[i, j:(j+numcol-1)]
tmp <- cbind(fixdata, flexdata)
names(tmp) <- names(daten[0:(firstcol+numcol-1)])
out <- rbind(out,tmp)
}
}
out <- out[2:nrow(out),]
return(out)
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我正在处理以下数据:
District <- c("AR01", "AZ03", "AZ05", "AZ08", "CA01", "CA05", "CA11", "CA16", "CA18", "CA21")
Run Code Online (Sandbox Code Playgroud)
我想在第二个字符之后拆分字符串并将它们分成两列。
使数据看起来像这样:
state district
AR 01
AZ 03
AZ 05
AZ 08
CA 01
CA 05
CA 11
CA 16
CA 18
CA 21
Run Code Online (Sandbox Code Playgroud)
有没有简单的代码来完成这项工作?非常感谢你的帮助
限定
df<-read.table(textConnection('egg 1 20 a
egg 2 30 a
jap 3 50 b
jap 1 60 b'))
Run Code Online (Sandbox Code Playgroud)
ST
> df
V1 V2 V3 V4
1 egg 1 20 a
2 egg 2 30 a
3 jap 3 50 b
4 jap 1 60 b
Run Code Online (Sandbox Code Playgroud)
我的数据没有因素,所以我将因子转换为字符:
> df$V1 <- as.character(df$V1)
> df$V4 <- as.character(df$V4)
Run Code Online (Sandbox Code Playgroud)
我希望通过V1保持"折叠"数据框:
请注意这是一个普遍的问题,例如我的数据集要大得多,我可能希望在折叠时使用不同的函数(例如,last,first,min,max,variance,st.dev.等).因此函数参数可能很长.
在这种情况下,我想要输出表单:
> df.collapse
V1 V2 V3 V4
1 egg 2 25 a
2 jap 3 55 b
Run Code Online (Sandbox Code Playgroud) 我有下面的数据框:
temp <- as.data.frame(with(uadm, table(prlo_state_code)))
Run Code Online (Sandbox Code Playgroud)
我期待创建11个虚拟变量.前10名和"其他"各1名.前10名很容易找到:
#top10
temp <- temp[order(temp$Freq, decreasing=T),]
head(temp, n=10)
Run Code Online (Sandbox Code Playgroud)
我知道R很棒,所以我假设有一个很容易自动创建(和命名)来自前10名的虚拟变量并将其余部分折叠成一个名为"其他"的最终虚拟变量.
在此先感谢任何帮助或见解.
我正在Stata中合并两个数据集,并提出了一个潜在的问题.
我计划sort
以完全相同的方式在每个数据集上对两组数据共有的几个分类变量进行计划.但是,有几个分类变量在一个数据集中存在更多类别而在另一个数据集中存在.我已经足够小心,以确保两个数据集中的编码匹配(例如,红色在数据集A和B中编码为1,但数据集A仅有红色,绿色和蓝色,而数据集B有红色,绿色,蓝色和黄色).
如果我sort
每个数据集以同样的方式和generate
一个id
变量(gen id = _n
),并merge
在这一点,我会遇到什么问题?
我正在编写一个程序,image
使用对源数组(hist
)中存储的数据的计算来创建灰度图像().存储在源数组中的数据在调用calloc for image后重置为零.
func1(){
float * hist = (float *) calloc(256, sizeof(float));
// operation to populate 'hist'
for...{
for...{
hist.....
}
}
hist2img(hist);
free(hist);
return 0;
}
hist2img(hist){
cout << "-> " << hist [4 * 250] << endl;
unsigned char * image = (unsigned char *) calloc(256 * 256, sizeof(unsigned char));
cout << "-> " << hist [4 * 250] << endl;
free(image);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
-> 0.997291
-> 0
Run Code Online (Sandbox Code Playgroud)
数据会发生什么变化?hist
在calloc指令之后,所有元素都为0.我需要image …
我需要为NSDictionaries
一个plist 节省大约14 .每个词典将有5个项目.1-地点名称
2-开始时间
3-完成时间
4-总计
5-附加说明
我一直在阅读,人们建议不要使用plist来获取大量数据.根据上面给出的描述,使用plist是明智的吗?
干杯,Sma