小编Dag*_*man的帖子

R 替换数据框中的多行

我有一个数据框如下:

df = data.frame(n=c(1, 2, 3), m=c(4, 5, 6))
Run Code Online (Sandbox Code Playgroud)

产生以下结果:

    n m
  1 1 4
  2 2 5
  3 3 6
Run Code Online (Sandbox Code Playgroud)

现在假设我想用向量替换前两行c(1, 2)。我尝试这样做:

df[1:2,] = c(1, 2)
Run Code Online (Sandbox Code Playgroud)

但这会产生结果

    n m
  1 1 1
  2 2 2
  3 3 6
Run Code Online (Sandbox Code Playgroud)

但我想要的是

    n m
  1 1 2
  2 1 2
  3 3 6
Run Code Online (Sandbox Code Playgroud)

我尝试设置c(1, 2)为 1x2 的矩阵,看看是否会替换行“行优先”而不是“列优先”,但这不起作用(仍然替换“列优先”)。将矩阵尺寸更改为 2x1 也没有效果。然后我尝试制作c(1, 2)一个数据框并使用数据框替换行,如下所示df[1:2,] = data.frame(c(1, 2)),但这仍然产生了不需要的结果。如果我使用它的转置替换数据帧,也会发生同样的事情t()。有没有办法先替换数据帧行中的行?显然,如果我一次只选择一行,例如 df[1,] = data.frame(c(1, 2)) 它工作得很好,给我

    n m
  1 1 …
Run Code Online (Sandbox Code Playgroud)

r dataframe

4
推荐指数
1
解决办法
1093
查看次数

将关系“类型”添加到 SQL 中的多对多表是不好的做法吗?

我正在构建一个具有以下两个表的 Postgres 数据库:

项目(id、startDate 等...)和员工(id、name 等...)

我想跟踪员工为项目添加的贡献类型。例如,员工#1 可能是项目 1 的“工程师”和项目 2 的“经理”。我也不希望限制员工可以对某个项目做出的贡献数量。因此,员工#1 可以是单个项目的“工程师”和“经理”。

我的第一直觉只是在两个标题为 ProjectEmployees 或其他东西之间建立多对多关系,并将 projectId、employeeId 和tributionType 存储为一个字符串,该字符串只会从枚举中获取值,而不必处理拼写错误或任何相关问题。

我的主要问题是这是否是一种不好的做法。我的另一个想法是将每种贡献类型拆分到自己的表中。因此,不是 EmployeeProjects 表,而是诸如 ProjectEngineers、ProjectManagers 等的表……并且不是将贡献类型存储为列,而是隐式在我正在使用的表中,并且该表只需要存储项目 ID 和员工 ID。该数据库中有更多的表具有类似的关系,其中不同表之间存在多对多关系,但每个关系可能是许多“类型”关系中的一种。对于每种类型的关系,将所有这些都拆分为单独的表是否更明智?或者像我的第一个想法一样在更通用的表中跟踪关系类型更好吗?

我想要的结果是能够有效地查看员工参与的所有项目贡献(和类型),以及查看项目的所有贡献者 + 贡献者类型。

postgresql database-design relationship

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

标签 统计

database-design ×1

dataframe ×1

postgresql ×1

r ×1

relationship ×1