小编BIC*_*ube的帖子

为R中的一组类似行添加计数器列

我在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)

r

8
推荐指数
1
解决办法
5744
查看次数

CROSS JOIN与一个空表sql server

我有两张桌子说MyFullMyEmpty.我需要对两个表中的所有记录进行组合.有时,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

sql-server sql-server-2008-r2

8
推荐指数
2
解决办法
5669
查看次数

如果在Excel中使用特定维度,则将度量值设置为NULL

我有一个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)

ssas mdx

8
推荐指数
1
解决办法
943
查看次数

如果表中的所有列都遵循SQL Server中的特定模式,则删除它们中的所有列

我有一个表,我需要删除多个遵循模式的列.假设我的表中的列名是(A1,A2,A3,B1,B2,B3),我需要删除以B(B1,B2,B3)开头的所有列.我能够在单独的查询中提取它们但仍然无法在输出上运行drop语句.我非常感谢你的帮助.请注意,我不允许使用游标部署脚本.所以纯SQL更可取.

谢谢,

sql-server alter-table

3
推荐指数
1
解决办法
1645
查看次数

在R中替换冗长的ifelse结构的最佳方法

我有以下数据框架

df = data.frame(Code=seq(80,105,1))
Run Code Online (Sandbox Code Playgroud)

我需要添加另一个tCodeCode列计算的列.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)

我觉得这不是解决这个问题的最佳方法.还有更好的建议吗?

r

2
推荐指数
1
解决办法
230
查看次数

将列表转换为数据框,每个级别进入单个列

我有一个矢量列表,如示例中所示

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将导致大量的列.非常感谢你的评论.

r

0
推荐指数
1
解决办法
87
查看次数

标签 统计

r ×3

sql-server ×2

alter-table ×1

mdx ×1

sql-server-2008-r2 ×1

ssas ×1