我在R中有一个有两列的数据框.第一列包含subjectID,第二列包含主题已完成的试用ID.
特定主题ID可能已经进行了超过1次的试验.我想添加一个带有计数器的列,该计数器开始计算每个主题 - 试验唯一值,并递增1,直到它到达最后一行.
更准确地说,我有这张表:
ID T
A 1
A 1
A 2
A 2
B 1
B 1
B 1
B 1
Run Code Online (Sandbox Code Playgroud)
我想要以下输出
ID T Index
A 1 1
A 1 2
A 2 1
A 2 2
B 1 1
B 1 2
B 1 3
B 1 4
Run Code Online (Sandbox Code Playgroud) 我有两张桌子说MyFull
和MyEmpty
.我需要对两个表中的所有记录进行组合.有时,MyEmpty
表可能没有记录,在这种情况下我需要返回所有记录MyFull
.这是我尝试过的:
--Q1 >> returns no results
SELECT *
FROM MyFull CROSS JOIN MyEmpty
--Q2 >> returns no results
SELECT *
FROM MyFull, MyEmpty
Run Code Online (Sandbox Code Playgroud)
我虽然使用LEFT JOIN
但我没有共同的钥匙加入.这是一个SQLFiddle
我有一个SSAS-2014立方体.如果在excel中的任一轴或透视表的过滤器窗格中使用特定维度,我想将特定度量设置为NULL.现在,最直观的解决方案是将此度量的范围与该维度的成员无关.说,我不希望该度量与会计期间成员一起使用,然后我在多维数据集中使用以下MDX:
CREATE MEMBER CURRENTCUBE.[Measures].[Test Measure] AS 1;
SCOPE([Measures].[Test Measure]);
SCOPE(DESCENDANTS([DIM Accounting Period].[Accounting Period Hierarchy].[All],,AFTER));
THIS = NULL;
END SCOPE;
END SCOPE;
Run Code Online (Sandbox Code Playgroud)
这似乎很好,因为excel将以下MDX发送回SSAS引擎
SELECT NON EMPTY Hierarchize (
{
DrilldownLevel (
{ [DIM Production Period].[Production Month].[All Dates] }
,
,
, INCLUDE_CALC_MEMBERS
)
}
) ON COLUMNS
FROM [CUBE - Opex Analysis]
WHERE ( [DIM Accounting Period].[Accounting Period Hierarchy].[Accounting Year].[2015],
[Measures].[Test Measure] ) CELL PROPERTIES VALUE
, FORMAT_STRING
, LANGUAGE
, BACK_COLOR
, FORE_COLOR
, FONT_FLAGS
Run Code Online (Sandbox Code Playgroud)
如果我在筛选器窗格中选择了两个成员,则会出现问题,如此图所示
其原因似乎与excel发送回引擎的MDX有关.它将项目封装在子多维数据集中,使引擎认为没有选择会计年度.这是excel使用的MDX:
SELECT NON …
Run Code Online (Sandbox Code Playgroud) 我有一个表,我需要删除多个遵循模式的列.假设我的表中的列名是(A1,A2,A3,B1,B2,B3),我需要删除以B(B1,B2,B3)开头的所有列.我能够在单独的查询中提取它们但仍然无法在输出上运行drop语句.我非常感谢你的帮助.请注意,我不允许使用游标部署脚本.所以纯SQL更可取.
谢谢,
我有以下数据框架
df = data.frame(Code=seq(80,105,1))
Run Code Online (Sandbox Code Playgroud)
我需要添加另一个tCode
从Code
列计算的列.Code
具有广泛的价值观.对于每个给定的范围,我需要具有特定值tCode
.我无法使用cut
函数来执行此任务.范围和预期结果给我.我只能想到这个冗长的ifelse
结构:
df$tCode = ifelse(df$Code > 102, 81,
ifelse(df$Code %in% seq(101,102,1),80,
ifelse(df$Code %in% seq(99,100,1),79,
ifelse(df$Code %in% seq(97,89,1),78,
ifelse(df$Code %in% seq(95,96,1),77,
ifelse(df$Code %in% seq(92,94,1),76,
ifelse(df$Code %in% seq(90,91,1),75,
ifelse(df$Code %in% seq(88,89,1),74,
ifelse(df$Code %in% seq(86,87,1),73,
ifelse(df$Code %in% seq(84,85,1),72,
ifelse(df$Code %in% seq(82,83,1),71,
ifelse(df$Code %in% seq(80,81,1),70,1))))))))))))
Run Code Online (Sandbox Code Playgroud)
我觉得这不是解决这个问题的最佳方法.还有更好的建议吗?
我有一个矢量列表,如示例中所示
l=list(a=c("AA","AAA"),b=c("BB","BBB","BBBB"),c=c("CC"))
Run Code Online (Sandbox Code Playgroud)
我想要的是生成一个包含两列的数据框.一个包含第一个级别,第二个包含第二个级别.例如,我需要这个输出
df=data.frame(fst=c(rep("a",2),rep("b",3),rep("c",1)),snd=c("AA","AAA","BB","BBB","BBBB","CC"))
Run Code Online (Sandbox Code Playgroud)
我做的是,我将列表转换为宽格式的数据框,然后使用reshape2包将其融合,如下所示:
library(plyr)
library(reshape2)
df=ldply(l,data.frame)
df_wanted=melt(df2,id.vars=".id",na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)
所以这使我能够得到所需的结果(仍然需要小的处理),但我想知道是否有一个更简单的解决方案直接将列表转换为df_wanted
格式,因为在我的情况下df
将导致大量的列.非常感谢你的评论.