基于两列使用left_join在R中不起作用

问题描述

我正在尝试data_frame = data_frame.set_index('Name') d = data_frame['Dimensions'].str.split(',|: ',expand=True)\ .rename(columns=lambda x: f'Meas_{x//2}' if x%2 else f'Dim_{x//2}') df_out = pd.wide_to_long(d.reset_index(),['Dim','Meas'],'Name','No',sep='_' )\ .reset_index() df_out['Name'] = df_out['Name'].str[0] + df_out['Dim'] df_out[['Name','Meas']].sort_values('Name') 一个包含cld字母的数据框指向主数据框。联接应基于两列。每行只有一列带有值,因为它们来自不同的模型。

以下是主要数据框:

  Name Meas
0   1a  5cm
2   1b  6cm
4   1c  7cm
1   2a  4cm
3   2c  3cm
5   2e  5cm

这里是cld数据框:

ListView.builder(
          physics: NeverScrollableScrollPhysics(),shrinkWrap: true,itemCount: this.user.list.length,itemBuilder: (BuildContext context,int index) {
            return ListTile(
                leading: Container(
                  width: screenWidth / 5,height: screenHeight / 3.5,child: ClipRRect(
                    borderRadius: BorderRadius.all(Radius.circular(10.0)),child: CachednetworkImage(
                      imageUrl:
                          this.user.list[index].picture,fit: BoxFit.cover,),},

cld位于名为“ .group”的列中。将列保留为字符并将其转换为因数都将导致空列:

left_join

解决方法

这是您需要的吗?

main_df %>%
  left_join(select(cld_df,crop,till,.group),by = c("crop","till")) %>%
  left_join(select(cld_df,GW,"GW")) %>%
  mutate(.group = coalesce(.group.x,.group.y)) %>%
  select(-.group.x,-.group.y) %>%
  print(n=99)
# # A tibble: 27 x 5
#    crop  till  GW       dm .group
#    <chr> <chr> <chr> <dbl> <chr> 
#  1 B     X     250   12.5  "  b" 
#  2 B     X     100   21.2  "  b" 
#  3 B     X     500    9.09 "  b" 
#  4 B     Y     250    9.66 "  b" 
#  5 B     Y     100   32.3  "  b" 
#  6 B     Y     500   10.6  "  b" 
#  7 B     Z     250    6.13 " a " 
#  8 B     Z     100   49.7  " a " 
#  9 B     Z     500   28.9  " a " 
# 10 A     X     250   14.8  " ab" 
# 11 A     X     100   11.6  " ab" 
# 12 A     X     500   23.7  " ab" 
# 13 A     Y     250   22.9  "  b" 
# 14 A     Y     100    8.59 "  b" 
# 15 A     Y     500   20.9  "  b" 
# 16 A     Z     250   34.7  " a " 
# 17 A     Z     100   25.1  " a " 
# 18 A     Z     500   12.0  " a " 
# 19 C     X     250    2.99 " ab" 
# 20 C     X     100   20.8  "  b" 
# 21 C     X     500    5.69 " a " 
# 22 C     Y     250   35.6  " ab" 
# 23 C     Y     100   24.1  "  b" 
# 24 C     Y     500   32.3  " a " 
# 25 C     Z     250   35.6  " ab" 
# 26 C     Z     100    8.36 "  b" 
# 27 C     Z     500    6.07 " a " 

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...