我正在尝试将dataframe转换为字典(因为它们在过滤key时速度更快),我目前正在使用 t3 = time()
r={}
for i in df.index.unique():
r[i]=[]
r[i].append(df.loc[i].values)
print(round((time()-t3), 1), "s") 这种类型的转换速度很慢。有没有别的选择呢?我希望数据帧的索引作为键,行作为在单个键上具有多个值的值
我正在尝试根据一个因子(这里是ID)对数据帧进行子集。我想要的是基于因子级别的子集,从一个特定的字符开始。下面是一个数据帧示例:
ID = c("100", "100a", "101", "103", "204", "206", "207", "207a", "207b") # ID is a factor
Value = rnorm(9)
df = data.frame(ID, Value)
我希望得到两个独立的数据帧,一个ID以"1“开头
在试图绘制我的数据时,我发现了一种意外的行为,导致我的小组被错误地重新排列和标记。
简而言之,将一个factor对象存储到一个数据帧的几个列中,会导致它被胁迫为一个字符,而不是一个因素。这似乎与有关,但我仍然不明白为什么会发生这种情况。
# x is a factor
(x = factor(c("red", "blue", "green")))
class(x)
# make a data frame
frame = data.frame("y"=1:3, "z"=1:3)
# replacing one c
我希望基于R中的2列合并2个数据帧,这两个数据帧称为popr和data列,它们共享相同的2个变量: USUBJID和TRTAG2N,这两个变量是我想要组合这两个数据帧的变量。
当我只尝试根据一列进行合并时,合并函数就能工作:
merged <- merge(popr,droppedcol,by="USUBJID")
当我试图通过使用2列合并并查看数据框架“工期”时,表是空的,没有值,只有列标题。它说“表中没有可用的数据”。
我的任务是在R中复制SAS代码:
data duration;
set pop combined1 ;
by usubjid trtag2n;
我有两个长度相等的列表:一个是数据帧列表,另一个是向量列表,使得每个向量的长度与第一个列表的相应数据帧中的行数一致。我希望将第二个列表中的向量指定为每个数据帧中第一列的值。使用下面的代码可能更容易解释:
for (i in seq_along(data)){
data[[c(i, 1)]] = links[[i]]
}
,其中data是数据帧列表,links是矢量列表。虽然这段代码运行良好,而且在速度上没有特别需要避免for循环,但我想知道是否有其他方法可以在没有for的情况下执行相同的操作
我有以下数据:
rand.sum <- function(n){
x <- sort(runif(n-1))
c(x,1) - c(0,x)
}
M <- t(replicate(8,rand.sum(8))) # data frame with probabilities
Test1 <- as.data.frame(t(replicate(1, rand.sum(8))))
Test2 <- as.data.frame(t(replicate(1, rand.sum(8))))
Test <- rbind(Test1,Test2) # Test da
我的多维数据集中有Customers维度,通过CustomerId链接到事实表。现在我得到了一个新的表,它描述了这些客户的父子关系。新表只有to列: CustomerId和ParentId。我需要将此层次结构包含到多维数据集中。
这可以通过将ParentId作为新列包含到客户维度表中来轻松完成,但在我的示例中,一个子记录可以在同一级别上有多个父记录,例如
A is child of B
A is child of C
A is child of D
我试图建立多对多维度,它似乎适用于这种情况,但只有当只有一个级别的父母,但在我的情况下,可以有很多级别,例如。
A is child of B,