将数据框行值与列连接起来
join data frames row values with columns
ID <- c('1', '2', '3', '4')
Field_Name <- c('Location', 'Status', 'Company', 'Priority')
Field_Value <- c('Arizona', 'New', 'MyCompany', 'Urgent')
df_1<-data.frame(ID, Field_Name, Field_Value)
field_name_v <- as.factor(df_1$Field_Name)
custom_fields_df2 <- data.frame(matrix(ncol =((length(field_name_v))),
nrow = (nrow(df_1))))
colnames(custom_fields_df2) <- field_name_v
custom_fields_df2$ID <-ID
这似乎是一个奇怪的问题,但对于一个相当大的数据集来说是需要的。我知道这可能非常简单,但我无法弄清楚。如果您查看 df_1,它具有 Field_Name 值,表示用户添加的自定义字段。在 custom_fields_df2 中,我正在尝试创建一个水平图表,其中 df_1$Field_Name 中的每个唯一值都是一列,而 Field_Value 连接在该列下方Field_Name = 列名和 ID 匹配。任何帮助将不胜感激。
您似乎想要 reshape(join 具有不同的含义)您的数据框从长格式到宽格式。来自 tidyverse 的包 dplyr
有一个方便的功能。您可以阅读它 here 并尝试其他建议的解决方案。
这是我解决你的问题的方法:
library(tidyverse)
df_1 <- data.frame(ID = c('1', '2', '3', '4'),
Field_Name = c('Location', 'Status', 'Company', 'Priority'),
Field_Value = c('Arizona', 'New', 'MyCompany', 'Urgent'))
custom_fields_df2 <- df_1 %>%
pivot_wider(names_from = Field_Name, values_from = Field_Value)
这会产生:
> custom_fields_df2
# A tibble: 4 x 5
ID Location Status Company Priority
<chr> <chr> <chr> <chr> <chr>
1 1 Arizona NA NA NA
2 2 NA New NA NA
3 3 NA NA MyCompany NA
4 4 NA NA NA Urgent
我不确定您的专栏 ID
的确切用途,但对我来说它似乎多余所以我将其删除:
custom_fields_df3 <- df_1 %>%
select(-ID) %>%
pivot_wider(names_from = Field_Name, values_from = Field_Value)
得到:
> custom_fields_df3
# A tibble: 1 x 4
Location Status Company Priority
<chr> <chr> <chr> <chr>
1 Arizona New MyCompany Urgent
如果需要,可以使用 as.data.frame()
.
将 tibble 转换为数据帧
ID <- c('1', '2', '3', '4')
Field_Name <- c('Location', 'Status', 'Company', 'Priority')
Field_Value <- c('Arizona', 'New', 'MyCompany', 'Urgent')
df_1<-data.frame(ID, Field_Name, Field_Value)
field_name_v <- as.factor(df_1$Field_Name)
custom_fields_df2 <- data.frame(matrix(ncol =((length(field_name_v))),
nrow = (nrow(df_1))))
colnames(custom_fields_df2) <- field_name_v
custom_fields_df2$ID <-ID
这似乎是一个奇怪的问题,但对于一个相当大的数据集来说是需要的。我知道这可能非常简单,但我无法弄清楚。如果您查看 df_1,它具有 Field_Name 值,表示用户添加的自定义字段。在 custom_fields_df2 中,我正在尝试创建一个水平图表,其中 df_1$Field_Name 中的每个唯一值都是一列,而 Field_Value 连接在该列下方Field_Name = 列名和 ID 匹配。任何帮助将不胜感激。
您似乎想要 reshape(join 具有不同的含义)您的数据框从长格式到宽格式。来自 tidyverse 的包 dplyr
有一个方便的功能。您可以阅读它 here 并尝试其他建议的解决方案。
这是我解决你的问题的方法:
library(tidyverse)
df_1 <- data.frame(ID = c('1', '2', '3', '4'),
Field_Name = c('Location', 'Status', 'Company', 'Priority'),
Field_Value = c('Arizona', 'New', 'MyCompany', 'Urgent'))
custom_fields_df2 <- df_1 %>%
pivot_wider(names_from = Field_Name, values_from = Field_Value)
这会产生:
> custom_fields_df2
# A tibble: 4 x 5
ID Location Status Company Priority
<chr> <chr> <chr> <chr> <chr>
1 1 Arizona NA NA NA
2 2 NA New NA NA
3 3 NA NA MyCompany NA
4 4 NA NA NA Urgent
我不确定您的专栏 ID
的确切用途,但对我来说它似乎多余所以我将其删除:
custom_fields_df3 <- df_1 %>%
select(-ID) %>%
pivot_wider(names_from = Field_Name, values_from = Field_Value)
得到:
> custom_fields_df3
# A tibble: 1 x 4
Location Status Company Priority
<chr> <chr> <chr> <chr>
1 Arizona New MyCompany Urgent
如果需要,可以使用 as.data.frame()
.