小编lee*_*sej的帖子

复合主键:是好还是坏

我一直在为在线商店系统设计数据库.通过阅读本网站上的一些帖子,我遇到的问题是,虽然我可以使用复合主键,但我会在下面解释一下,这是不是很糟糕的做法(根据我在这方面阅读的帖子)在stackoveflow上,很多人说这是一个不好的做法所以这就是我要问的原因.

我想在单独的表格中存储订单付款.原因在于,订单可以包含许多项目,这些项目以多对多关系的形式在单独的表格中处理.现在,如果我不使用复合主键作为我的付款表,我将失去我的独特性PaymentID:

[PaymentId] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[OrderId] INT NOT NULL PRIMARY KEY --Also a Foreign Key--
Run Code Online (Sandbox Code Playgroud)

现在,如果我只删除主键OrderId,我会在这里丢失我的一对一关系Many OrderIds can be associated to many PaymentIds,我不想要这个.

这就是为什么这里先前提出的问题已经(大多数时候)得出结论,复合键是一个坏主意.所以我想为自己澄清一下; 如果不好,那么最佳做法是什么?

sql database database-design relational-database

45
推荐指数
4
解决办法
4万
查看次数

Python通过索引迭代字典

我想通过索引号迭代python中的字典.

示例:

 dict = {'apple':'red','mango':'green','orange':'orange'}
Run Code Online (Sandbox Code Playgroud)

我想从头到尾遍历字典,以便我可以通过索引访问字典项.例如,第1项将是苹果,第2项将是芒果,值将为绿色.

像这样的东西:

for i in range(0,len(dict)):
    dict.i
Run Code Online (Sandbox Code Playgroud)

python dictionary

37
推荐指数
3
解决办法
8万
查看次数

如何将一个不带引号的列名列表送入`lapply`(以便我可以使用`dplyr`函数)

我正在尝试编写一个函数tidyverse/dplyr,我想最终使用lapply(或map).(我一直在努力回答这个问题,但发现了一个有趣的结果/死胡同.请不要将其标记为重复 - 这个问题是你在那里看到的答案的延伸/背离.)

是否有
1)获取引用变量列表以在dplyr函数内工作
(并且不使用已弃用的SE_函数)的方法, 或者是
2)某种方式通过一个lapply或多个方式提供一个未加引号的字符串列表map

我使用Programming in Dplyr小插图来构建我认为最符合当前使用NSE标准的功能.

样本数据:

sample_data <- 
    read.table(text = "REVENUEID AMOUNT  YEAR REPORT_CODE PAYMENT_METHOD INBOUND_CHANNEL  AMOUNT_CAT
               1 rev-24985629     30  FY18           S          Check            Mail     25,50
               2 rev-22812413      1  FY16           Q          Other      Canvassing   0.01,10
               3 rev-23508794    100  FY17           Q    Credit_card             Web   100,250
               4 rev-23506121    300  FY17           S    Credit_card            Mail   250,500
               5 rev-23550444    100  FY17           S    Credit_card             Web   100,250
               6 rev-21508672 …
Run Code Online (Sandbox Code Playgroud)

r dplyr lazyeval tidyverse rlang

10
推荐指数
1
解决办法
517
查看次数

将字符串转换为函数中 dplyr 接受的符号

我的数据框看起来像:

> str(b)
'data.frame':   2720 obs. of  3 variables:
 $ Hospital.Name: chr  "SOUTHEAST ALABAMA MEDICAL CENTER" "MARSHALL MEDICAL CENTER SOUTH" "ELIZA COFFEE MEMORIAL HOSPITAL" "ST VINCENT'S EAST" ...
 $ State        : chr  "AL" "AL" "AL" "AL" ...
 $ heart attack : num  14.3 18.5 18.1 17.7 18 15.9 19.6 17.3 17.8 17.5 ...
Run Code Online (Sandbox Code Playgroud)

我想按状态对其进行分组,按状态和心脏病发作对它们进行排序,然后添加一列返回每个组内的行号。理想的结果如下:

# A tibble: 2,720 x 4
# Groups:   State [54]
                      Hospital.Name State `heart attack`  rank
                              <chr> <chr>          <dbl> <int>
 1 PROVIDENCE ALASKA MEDICAL CENTER    AK           13.4 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

5
推荐指数
1
解决办法
4834
查看次数

如何通过多个灵活的条件筛选列

我正在编写一个聚合数据帧的函数,它通常需要适用于各种各样的数据集.此功能的一个步骤是dplyr的filter功能,用于仅从数据中选择与手头任务相关的广告活动类型.由于我需要灵活的功能,我想要ad_campaign_types作为输入,但这会使过滤变得多毛,如下所示:

aggregate_data <- function(ad_campaign_types) {
  raw_data %>%
    filter(ad_campaign_type == ad_campaign_types) -> agg_data
  agg_data
}
new_data <- aggregate_data(ad_campaign_types = c("campaign_A", "campaign_B", "campaign_C"))
Run Code Online (Sandbox Code Playgroud)

我认为上面的方法可行,但是当它运行时,奇怪的是它只返回过滤数据集的一小部分.有一个更好的方法吗?

另一个可替换代码的小例子:

ad_types <- c("a", "a", "a", "b", "b", "c", "c", "c", "d", "d")
revenue <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
data <- as.data.frame(cbind(ad_types, revenue))

# Now, filtering to select only ad types "a", "b", and "d",
# which should leave us with only 7 values
new_data <- filter(data, ad_types == c("a", …
Run Code Online (Sandbox Code Playgroud)

r function dplyr

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

将具有可变列类型的多个.csv文件导入到R中

如何正确构建lapply以从所有.csv文件中读取(从一个目录中),将所有列作为字符串加载,然后将它们绑定到一个数据框中.

,我有办法让所有加载并装订成数据帧该.csv文件.不幸的是,他们对这些列如何进行类型转换的可变性感到困惑.因此给我这个错误:

错误:无法在列中自动从字符转换为整数

我尝试用数据类型参数补充代码,并试图将所有内容保存为字符; 我现在陷入困境,能够正确地获得我的'lapply'循环'以有效地引用其'循环'的每个循环的主题.

srvy1 <- structure(list(RESPONSE_ID = 584580L, QUESTION_ID = 328L, SURVEY_ID = 2324L, 
           AFF_ID_INV_RESP = 5L), .Names = c("RESPONSE_ID", "QUESTION_ID", 
                                             "SURVEY_ID", "AFF_ID_INV_RESP"), class = "data.frame", row.names = c(NA, 
                                                                                                                  -1L))

srvy2 <- structure(list(RESPONSE_ID = 584580L, QUESTION_ID = 328L, SURVEY_ID = 2324L, 
           AFF_ID_INV_RESP = "bovine"), .Names = c("RESPONSE_ID", "QUESTION_ID", 
                                                   "SURVEY_ID", "AFF_ID_INV_RESP"), class = "data.frame", row.names = c(NA, 
                                                                                                                        -1L))    

files = list.files(pattern="*.csv")
tbl = lapply(files, read_csv(files, col_types = cols(.default = col_character()))) %>% bind_rows
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的解决方案,我可以保持整齐,或者我必须下降一个级别,然后自己公开构建for循环 …

r dplyr tidyverse

-1
推荐指数
1
解决办法
2113
查看次数